当您在 SDK 样式的 .csproj 文件(如与 .NET Core 或 .NET 5+ 一起使用的文件)中PackageReference向 NuGet 包Bond.CSharp添加 时,项目目录中任何 .bond 文件的类型将包含在您的程序集:
<Project Sdk="Microsoft.NET.Sdk">
<ItemGroup>
<PackageReference Include="Bond.CSharp" Version="9.0.3" />
</ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
代码生成将在项目目录中的所有 .bond 文件上运行,生成的 .cs 文件将编译到您的程序集中。
MSBuild 项BondCodegen用于收集要处理的 .bond 文件。您可以使用MSBuild 的更新和删除功能来自定义代码生成中包含的项目。
有关目标支持的更多详细信息,例如可用于自定义代码生成的元数据,请查看Bond.CSharp 包 README或目标本身。(请注意,私有属性中以下划线开头的任何属性/目标。这些属性不是代码生成目标的公共接口的一部分,可以随时更改。)
Bond.CSharp 包引入了许多其他 Bond 包以获得 Bond 序列化的全部功能,这通常是您想要的。但是,您还可以使用更细粒度的包来更精确地控制依赖项(例如,不添加对 Newtonsoft.JSON 的依赖项)。
当您使用 Visual Studio 添加对 NuGet 包Bond.CSharp的引用时,NuGet 会将对 Bond codegen .targets 文件的引用添加到 .csproj 文件。此 .targets 文件将自动在 BondCodegen ItemGroup 中的任何 .bond 文件上运行 codegen,并且生成的 .cs 文件将隐式编译。
在 Visual Studio 中,这是通过在其属性中更改文件的“构建操作”来控制的。
有一个简单的示例展示了 BondCodegen ItemGroup 如何在 Bond 源树中工作。.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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6624 次 |
| 最近记录: |