繁体   English   中英

NuGet没有丢失包裹

[英]NuGet not getting missing packages

我在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的建议有所帮助,这是他的两篇博文:

使用当前的设置,您应该确保已在两个解决方案上启用了NuGet Package Restore, 并且解决方案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>


或者 ,如果你想使用一个单一的包文件夹,你可以修改这两个 .nuget\\NuGet.targets文件和设置-o (或-OutputDirectory)时的nuget install命令。

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

在此输入图像描述

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

看看我们的答案: 使用git子模块进行Nuget包恢复 ,此选项不涉及任何*.csproj操作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM