NuGet没有丢失包裹

gbs*_*gbs 5 visual-studio-2010 visual-studio nuget nuget-package

我在VSS中有以下项目结构

在此输入图像描述

现在在Visual Studio 2010 Pro中:我打开Solution2,然后将Library1添加为外部项目.

Library1引用了两个我通过NuGet获得的外部库.当我构建我的Solution2时,一切正常.所以我签了我所有的项目.

问题: 当另一个开发人员从sourcesafe和build获得Solution2时,它说Library1缺少那些外部库dll.

试过以下:

1:http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages

所以现在我在Solution2下面有.nuget文件夹,它会被签入.但这仍然没有带来dll.

我怀疑是Library1处于一个单独的解决方案中导致了这个问题.

任何想法如何通过NuGet自动丢失包?

更新:
Xavier的建议有所帮助,这是他的两篇博文:

Xav*_*ter 5

根据您目前的设置,你应该确保你已经启用NuGet包上恢复双方的解决方案,并在溶液2 nuget.targets应该指向的NuGet install命令的Solution1\Packages输出目录.您的文件夹结构如下所示:

文件夹结构

原因:Library1.csproj引用指向Solution1\Packages位置.将此项目添加到Solution2时,项目引用不会更改,但解决方案将还原Solution2\Packages中的包而不是Solution1\Packages.

如果您已经在Solution2的项目中安装了软件包,则需要确保它们仍然针对Solution2\Packages进行恢复.为此,我建议您在共享项目文件中设置一个MSBuild属性(在nuget.targets文件的import语句上方),并将此MSBuild属性值传递给RestoreCommand.

例如:

<PackagesOutDir> $(SolutionDir).. \库\包</ PackagesOutDir>

并调整nuget.targets文件,例如:

<PackagesOutDir Condition ="$(PackagesOutDir)==''"> $(SolutionDir)\ Packages </ PackagesOutDir>

...

<RestoreCommand> ... -o"$(​​PackagesOutDir)"</ RestoreCommand>


(可选)如果要使用单个Packages文件夹,则可以修改这两个 .nuget\NuGet.targets文件并-o为该nuget install命令设置(或-OutputDirectory)开关.

将其附加到RestoreCommand元素:-o"$(​​SolutionDir ..\Packages"将确保所有包在单个位置恢复:

在此输入图像描述

请注意,每次安装NuGet包后,您都必须手动更新已安装的包引用!