强制NuGet包为PCL项目使用短文件夹名称

时间:2015-08-02 17:00:56

标签: nuget nuget-package portable-class-library

当我在构建服务器上本地运行时,我遇到了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”名称?

1 个答案:

答案 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不会重命名这些目录。