![](/img/trans.png)
[英]How do I Install, Update, Register a Nuget package on the Web Server that does not have Nuget or Visual Studio installed?
[英]How do I set Visual Studio to build a NuGet package?
如何在构建时让Visual Studio为我的库组件构建NuGet包?
我正在使用可移植类库作为示例项目。
确保NuGet.exe
文件夹中的.nuget
文件是最新的。
默认值来自AssemblyInfo.cs
,因此请进行清理。
如果不引用任何内容,则最好添加一个NuGet包引用,最好是像JSON.NET这样的简单引用。 通常,PCL项目没有外部依赖性,在这种情况下,没有NuGet引用,也没有任何NuGet引用,所需的MSBuild配置将无法正确设置,因此我们需要添加一个“虚拟”。
启用NuGet软件包还原。
编辑NuGet.targets文件,并确保BuildPackage
为true
。
<!-- Property that enables building a package from a project --> <BuildPackage Condition=" '$(BuildPackage)' == '' ">true</BuildPackage>
编辑您的.csproj文件并将其添加到第一个默认PropertyGroup
<BuildPackage>true</BuildPackage>
重建您的项目,然后在输出中搜索nupkg并确认包文件的创建和位置。
删除虚拟的NuGet软件包引用,然后再次构建并检查输出。
若要进一步自定义程序包的创建,可以将MyProjectName.nuspec
文件粘贴在.csproj
文件旁边。
有关NuSpec格式的更多信息,请参见http://docs.nuget.org/docs/reference/nuspec-reference 。 您还可以从现有软件包(仅是一个zip文件)中提取一个文件,并仔细看看它是如何完成的。
添加这样的构建后事件:
$(SolutionDir)\.nuget\nuget.exe pack "$(MSBuildProjectFullPath)" -p Configuration=Release -o "$(MSBuildProjectDirectory)\bin\Release" -symbols"
然后下载nuget.exe
其.nuget
解决方案文件旁边的.nuget
文件夹中。
您可以使用nuget update -self
保持.exe的nuget update -self
。
注意
nuget.exe pack
当前存在一个错误,在该错误中它将看到一个packages.config
文件,并尝试查找您的解决方案中提到的软件包,但是如果packages文件夹位于一个陌生的地方(例如,如果您的解决方案),则无法找到它们文件不是项目的上一级。
要解决此问题,请添加另一个构建后事件,以将packages
文件夹复制到项目文件夹中。
repositorypath
配置设置似乎对我无济于事。
查看GitHub报告:
https://github.com/NuGet/Home/issues/5316
真有趣 当我采用这种新方法时,我在自动构建构建包的惯常方法上遇到了问题。 因此,当我在这里遇到自己的问题时,我正在寻找一个合适的SO问题来回答我的新的构建后方法!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.