tug*_*erk 12 c# asp.net post-build-event visual-studio nuget
我的本地nuget库存储库分别用于我的个人和工作相关的类库.
我已经为不再开发的库创建了一些nuget包.我只为他们这样做,因为我不知道如何在项目构建后自动更新它们.
我认为所有的工作都是由nuget命令行和Visual Studio命令提示符完成的.所以我可以很容易地完成我需要的工作(当然我会完全了解命令而不是!)
基本上我希望在项目的post-build事件上执行以下任务.
在项目构建上:
Phil Haack展示了这个功能,但据我所知,它仍然是一个原型.
所以我的要求是上面的.有没有其他人完成这个?
jst*_*ant 11
选择的解决方案看起来会起作用,但似乎有一个更简单的解决方案可满足您的要求.
您可以创建一个nuspec文件,该文件将从项目的元数据中读取数据.您只需使用此命令执行此操作一次:
C:\<Path to project>\nuget spec
Run Code Online (Sandbox Code Playgroud)
这会在spec文件中创建"标记",在创建nuget包时,这些标记将被项目的元数据替换.这包括文件版本.您将需要替换,因为所有项目在技术上都假设拥有它们.
更多细节可以在这里找到:http://docs.nuget.org/docs/creating-packages/Creating-and-Publishing-a-Package#From_a_project
然后...
对于.Net Framework(旧学校)项目,在项目的Post构建事件中,您可以这样做:
nuget pack "$(ProjectPath)"
xcopy "$(TargetDir)*.nupkg" "<path where you are hosting your local nuget repo>" /C /Y
Run Code Online (Sandbox Code Playgroud)
(假设您的系统PATH上有nuget.exe).
对于.Net Core和Standard项目,nuget无法打包它们(请参阅https://github.com/NuGet/Home/issues/4491).相反,使用它作为构建后的步骤:
dotnet pack "$(ProjectPath)" --no-build --include-source --include-symbols --output "<path where you are hosting your local nuget repo>"
当然,您可以调整选项以满足您的需求.见https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-pack?tabs=netcore2x的dotnet pack命令选项.
以防万一其他人(像我一样)遇到这个古老的问题 - 在当前时代(VS2017,SDK/NugetReference 格式/.NET Core/.NET Standard/多目标项目),NuGet 包的创建是一个选项项目属性 - 因此,只需要解决本地存储库的问题:
如果您有单目标项目,要将 .nupkg 文件复制到本地 NuGet 存储库,请添加构建后事件(项目属性 > 构建事件 > 构建后事件命令行):
xcopy $(TargetDir)*.nupkg [本地nuget 存储库的路径] /s
喜欢:
xcopy $(TargetDir)*.nupkg G:\imbVelesOpenSource\LocalNuGet\imbVelesSecondGeneration\ /s
如果您有多目标项目,要将 .nupkg 文件复制到本地 NuGet 存储库:添加构建后事件(项目属性 > 构建事件 > 构建后事件命令行):
xcopy $(TargetDir)..*.nupkg [本地nuget 存储库的路径] /s
喜欢:
xcopy $(TargetDir)..*.nupkg G:\imbVelesOpenSource\LocalNuGet\imbVelesSecondGeneration\ /s
更新:忘记构建后事件,有一种更简洁的方法(xcopy 方法对于多目标项目很奇怪),只需在项目 XML 中添加:
<Target Name="CopyPackage" AfterTargets="Pack">
<Copy SourceFiles="$(OutputPath)$(PackageId).$(PackageVersion).nupkg" DestinationFolder="G:\imbVelesOpenSource\LocalNuGet\imbVelesSecondGeneration\" />
</Target>
Run Code Online (Sandbox Code Playgroud)
杰里米·斯金纳(Jeremy Skinner)撰写了一篇关于他如何执行自动化软件包构建并将其上传到NuGet Gallery 的博客文章.我认为它符合您的要求.
基本上他使用MsBuild将版本(带有MsBuild社区扩展 UpdateXml任务)应用于nuspec文件并调用nuget.exe将其打包.
| 归档时间: |
|
| 查看次数: |
11952 次 |
| 最近记录: |