当我在构建服务器上本地运行时,我遇到了NuGet产生不同输出文件夹的问题。
当我在本地构建我的PCL项目时(使用nuget 2.8.6),nuget包中的文件夹结构是:
lib
- portable-net45 win wpa81 wp80 MonoAndroid10 xamarinios10 MonoTouch10
- HC.Common.dll
但是,当我在构建服务器(TeamCity,nuget 2.8.2)上构建它时,我得到以下文件夹:
lib
- portable-Profile259
- HC.Common.dll
如何确保两者构建输出一致的文件夹结构?它使得“已发布”版本和我的测试版本之间的切换相当棘手,因为参考路径在版本之间不匹配。
有没有办法强制nuget使用简短的“Profile259”名称?
答案 0 :(得分:1)
如果可以确定它们,NuGet通常会将PCL配置文件替换为各个目标框架。
在构建服务器上,您似乎没有安装PCL配置文件xml文件,因此NuGet不会转换目录。所以我假设你正在使用NuGet pack YourProject.csproj
。如果使用NuGet pack YourNuGet.nuspec
,.nupkg中的目录在两台计算机上都是相同的。
我不知道任何使用了Portable-Profile78形式的PCL目录的NuGet包,我很惊讶这种方法有效,但似乎。所有带有PCL的NuGet包都具有以下形式的目录:
portable-net45+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10
因此,要使它们在两台计算机上保持一致,您需要在构建服务器上安装PCL配置文件或使用NuGet pack YourNuSpec.nuspec
,以便NuGet.exe不会重命名这些目录。