【问题标题】:Use NuGet build tool packages with ASP.NET Core将 NuGet 构建工具包与 ASP.NET Core 结合使用
【发布时间】:2018-06-05 11:27:45
【问题描述】:

NuGet 有几个包设计用于构建时使用。一个例子是Google.Protobuf.Tools,其中包含protoc.exe

使用 .NET Core 之前的 .csproj 系统,您可以添加 Google.Protobuf.Tools,然后使用预构建事件运行 ..\Packages\...\protoc ...

使用新的 .NET Core .csproj 系统,在某些方面更好。例如,清理了 .csproj 文件,因此您可以轻松手动添加构建目标以获取增量构建,如下所示:

<Target Name="PreBuild" BeforeTargets="PreBuildEvent">
  <CallTarget Targets="DeviceMessages" />
</Target>

<Target Name="DeviceMessages" Inputs="DeviceMessages.proto" Outputs="obj\DeviceMessages.cs">
  <Exec Command="..\Packages\Google.Protobuf.Tools.3.4.0\tools\windows_x64\protoc --proto_path=. --csharp_out=obj DeviceMessages.proto" Outputs="obj\DeviceMessages.cs" />
</Target>

问题是没有更多的Packages 文件夹。总的来说,这是一件好事。但是如何才能获得我想要的 NuGet 构建工具包的路径,以便在 MSBuild 目标中使用?

【问题讨论】:

    标签: msbuild nuget .net-core build-tools


    【解决方案1】:

    对于 ASP.NET Core 项目,您可以使用 $(NuGetPackageRoot) MSBuild 属性。这是在生成的 obj/ProjectName.csproj.nuget.g.props 文件中还原后定义的。

    那么您的 Exec 将是:

    <Exec Command="$(NuGetPackageRoot)Google.Protobuf.Tools.3.4.0\tools\windows_x64\protoc --proto_path=. --csharp_out=obj DeviceMessages.proto" Outputs="obj\DeviceMessages.cs" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-26
      • 2020-07-18
      • 2019-01-02
      • 2018-09-08
      • 1970-01-01
      • 2018-05-14
      • 2021-10-18
      • 1970-01-01
      相关资源
      最近更新 更多