我在VSS中有以下项目结构
现在在 Visual Studio 2010专业版中: 我打开 Solution2 ,然后将 Library1添加为外部项目。
Library1引用了两个我通过NuGet获得的外部库。当我构建我的Solution2时,一切正常。 所以我签了我所有的项目。
问题: 当另一个开发人员从sourcesafe和builds获得Solution2时,它说Library1缺少那些外部库dll。
尝试以下内容:
1:http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages
所以现在我在Solution2下面有.nuget文件夹,它会被签入。但那仍然没有带来dll。
我怀疑是Library1处于一个单独的解决方案中导致了这个问题。
如何通过NuGet自动获取丢失包的任何想法?
更新
泽维尔的建议有所帮助,这是他的两篇博文:
答案 0 :(得分:5)
根据您当前的设置,您应确保已在两个解决方案上启用了NuGet Package Restore,并且解决方案2 nuget.targets
应将nuget install命令指向{{1 } outputdirectory 。您的文件夹结构如下所示:
原因:Library1.csproj引用指向Solution1 \ Packages位置。将此项目添加到Solution2时,项目引用不会更改,但解决方案将恢复Solution2 \ Packages而不是Solution1 \ Packages中的包。
如果您已经在Solution2的项目中安装了软件包,则需要确保它们仍然针对Solution2 \ Packages进行恢复。为此,我建议您在共享项目文件中设置一个MSBuild属性(在nuget.targets文件的import语句之上),并将此MSBuild属性值传递给RestoreCommand。
E.g:
< PackagesOutDir> $(SolutionDir).. \库\软件包< / PackagesOutDir>
调整nuget.targets文件,例如:
< PackagesOutDir Condition =“$(PackagesOutDir)==''”> $(SolutionDir)\ Packages< / PackagesOutDir>
...
< RestoreCommand> ... -o“$(PackagesOutDir)”< / RestoreCommand>
(可选),如果您要使用单个“包”文件夹,则可以修改 Solution1\Packages
个文件并设置.nuget\NuGet.targets
(或 - OutputDirectory)切换-o
命令。
将此附加到RestoreCommand元素:-o“$(SolutionDir .. \ Packages”将确保所有包在一个位置恢复:
请注意,每次安装NuGet软件包后,您都必须手动更新已安装的软件包引用!
答案 1 :(得分:1)
在此处查看我们的答案:Nuget Package restore with git submodule,此选项不涉及任何*.csproj
操作