将NuGet构建工具包与ASP.NET Core一起使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将NuGet构建工具包与ASP.NET Core一起使用相关的知识,希望对你有一定的参考价值。

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="objDeviceMessages.cs">
  <Exec Command="..PackagesGoogle.Protobuf.Tools.3.4.0	oolswindows_x64protoc --proto_path=. --csharp_out=obj DeviceMessages.proto" Outputs="objDeviceMessages.cs" />
</Target>

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

答案

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

然后你的Exec将是:

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

以上是关于将NuGet构建工具包与ASP.NET Core一起使用的主要内容,如果未能解决你的问题,请参考以下文章

使用NuGet将我们的ASP.NET Core类库打包并将程序包(类库)发布到NuGet平台上进行管理

使用NuGet将我们的ASP.NET Core类库打包并将程序包(类库)发布到NuGet平台上进行管理

如何在 ASP.NET Core 中基于解决方案配置运行脚本

在 ASP.NET Core 中使用 SignalR

asp.net core 读写任意文件

使用 .NET 4.6 和 ASP.NET Core 的 TFS 2017 构建定义