是否有在C#项目中引用Microsoft Bond模式文件的标准方法?
发布于 2016-09-23 03:26:12
对于SDK风格的.csproj文件
当您将PackageReference添加到NuGet包Bond.CSharp的SDK样式的.csproj文件(类似于用于.NET核心或.NET 5+的文件)中时,项目目录中任何.bond文件的类型都将包含在您的程序集中:
<Project Sdk="Microsoft.NET.Sdk">
<ItemGroup>
<PackageReference Include="Bond.CSharp" Version="9.0.3" />
</ItemGroup>
</Project>代码生成将在项目目录中的所有.bond文件上运行,并且生成的.cs文件将编译到您的程序集中。
MSBuild项BondCodegen用于收集要处理的.bond文件。您可以使用MSBuild's Update and Remove functionality自定义codegen中包含的项。
有关目标支持的更多详细信息,如可用于自定义编解码器的元数据,请查看Bond.CSharp package README或the targets themselves。(请注意,私有属性中以下划线开头的任何属性/目标。这些属性不是codegen目标的公共接口的一部分,可以随时更改。)
Bond.CSharp软件包引入了许多其他焊接软件包,以获得焊接序列化的全部功能,这通常是您想要的。但是,您也可以使用finer-grained packages对依赖项进行更精确的控制(例如,不添加对Newtonsoft.JSON的依赖项)。
用于“经典”.csproj文件
当您使用Visual Studio添加对NuGet包Bond.CSharp的引用时,NuGet会将对Bond codegen .targets文件的引用添加到.csproj文件。此.targets文件将在BondCodegen ItemGroup中的任何.bond文件上自动运行codegen,并且生成的.cs文件将被隐式编译。
在Visual Studio中,这是通过在其属性中更改文件的“生成操作”来控制的。
焊接源树中有一个simple example showing how the BondCodegen ItemGroup works。下面是该.csproj文件的摘录:
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
...
<Import Project="..\..\..\..\cs\build\nuget\Bond.CSharp.props" />
...
<ItemGroup>
<BondCodegen Include="schema.bond" />
</ItemGroup>
...
<Import Project="$(BOND_PATH)\build\nuget\Bond.CSharp.targets" />
</Project>https://stackoverflow.com/questions/39571388
复制相似问题