gpt4 book ai didi

visual-studio-2010 - 作为构建过程的一部分自动创建 NuGet 包

转载 作者:行者123 更新时间:2023-12-03 05:37:40 25 4
gpt4 key购买 nike

我有一个想要扩展的自动构建过程,这样我就可以构建通过 NuGet 分发的库。目前,运行 nuget.exe 来创建包是手动操作。

设置 VS 2010 以便我的 NuGet 包 (*.nupkg) 文件成为“发布”构建的最终结果的最佳方法是什么?

请记住,我还有一些包的其他文件(内容和工具)。而且,在大多数情况下,我将多个项目合并到一个 NuGet 包中以支持 .NET 4、Silveright 和 Phone 7。

(我应该澄清,现有的“自动化”流程是一个简单的批处理文件运行程序,它使用命令行构建解决方案。)

更新

我想刷新此讨论,因为问题尚未解决。虽然 @pravin 提供的链接很有帮助,但它并没有解决我在一个包中拥有多个项目以及 PowerShell 脚本、配置和源代码转换等其他内容的事实。

我可以使用的最佳示例是同时具有 .NET 4 和 Silverlight 5 版本的程序集。它们分布在同一个包中。我无法使用构建后事件来创建包,因为该包依赖于两个项目。

最佳答案

可能有效的一件事是创建自定义 MSBuild .proj 文件。您可以在自定义脚本中定义几个目标,第一个在您的解决方案上执行编译。执行以下编译的第二个目标将使用 EXEC MSBuild 任务来调用 nuget.exe 命令行实用程序。然后,更新批处理文件运行程序以执行 msbuild 可执行文件,并提供自定义项目文件作为参数。您可能已经在批处理脚本中使用了 MSBuild,在这种情况下,这只是参数交换的问题。您可以将自定义 proj 文件包含在解决方案的解决方案项中。如果您这样做了,您可以轻松地在 Visual Studio 中添加外部工具引用来快速测试您的自定义脚本,以确保它按照您希望的方式构建和生成包。

MSBuild 示例

您可以将此作为起点:

<Project DefaultTargets="Compile" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >
<PropertyGroup>
<SolutionFile></SolutionFile>
<NugetExecutable>C:\PathToNuget\nuget.exe</NugetExecutable>
<NuspecFile></NuspecFile>
</PropertyGroup>

<Target Name = "Compile">
<MSBuild Projects="$(SolutionFile)" Properties="Configuration=Release" />
</Target>

<Target Name = "Package">
<!-- You could use the MSBuild Copy task here to move the compiled code into
a structure that fits your desired package format -->
<Exec Command="&quot;$(NugetExecutable)&quot; pack $(NuspecFile)" />
</Target>
</Project>

然后你可以这样调用它:

"C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" Build.proj /p:SolutionFile=PathToSolution\App.sln;NuspecFile=foo.nuspec

关于visual-studio-2010 - 作为构建过程的一部分自动创建 NuGet 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9180904/

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