gpt4 book ai didi

c# - 在 C# 项目中使用 Microsoft Bond

转载 作者:行者123 更新时间:2023-11-30 20:34:09 24 4
gpt4 key购买 nike

是否有在 C# 项目中引用 Microsoft Bond 架构文件的标准方法?

最佳答案

对于 SDK 风格的 .csproj 文件

当您将 PackageReference 添加到 NuGet 包时 Bond.CSharp在 SDK 风格的 .csproj 文件中(例如与 .NET Core 或 .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自定义代码生成中包含的项目。

有关目标支持的更多详细信息,例如可用于自定义代码生成的元数据,请查看 Bond.CSharp package READMEthe targets themselves . (请注意,私有(private)属性中以下划线开头的任何属性/目标。这些属性不是代码生成目标的公共(public)接口(interface)的一部分,可能随时更改。)

Bond.CSharp 包引入了许多其他 Bond 包以获得 Bond 序列化的全部功能,这通常是您想要的。但是,有finer-grained packages您还可以使用它来更精确地控制依赖项(例如,不添加对 Newtonsoft.JSON 的依赖项)。

对于“经典”.csproj 文件

当您使用 Visual Studio 添加对 NuGet 包的引用时 Bond.CSharp , NuGet 会将对 Bond codegen .targets 文件的引用添加到 .csproj 文件中。这个 .targets 文件将自动对 BondCodegen ItemGroup 中的任何 .bond 文件运行代码生成,并且生成的 .cs 文件将被隐式编译。

在 Visual Studio 中,这是通过更改文件属性中的“构建操作”来控制的。

有一个 simple example showing how the BondCodegen ItemGroup works在 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>

关于c# - 在 C# 项目中使用 Microsoft Bond,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39571388/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com