以防万一其他人(比如我)遇到这个古老的问题 - 在当前时代(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>