如果您(和我一样)遇到这个古老的问题 - 在当前时代(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>