以防万一其他人(比如我)遇到这个古老的问题 - 在当前时代(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>
更新
对于较新的 NuGet 版本,它切断了最后一个 0(来自 0.0.0.0 版本符号的补丁),您需要正则表达式 PackageVersion:
<Target Name="CopyPackage" AfterTargets="Pack">
<Copy SourceFiles="$(OutputPath)$(PackageId).$([System.Text.RegularExpressions.Regex]::Replace("$(PackageVersion)", "^(.+?)(\.0+)$", "$1")).nupkg" DestinationFolder="G:\imbVelesOpenSource\LocalNuGet\imbVelesSecondGeneration\" />
</Target>