【发布时间】:2018-04-26 19:30:57
【问题描述】:
这是示例项目结构:
{ ProjectA }
{ packages } <-- packages are created here
{ ProjectA }
- ProjectA.csproj <-- references ProjectB and C.
- packages.config
- ProjectA.sln <-- contains all projects: A, B and C.
{ ProjectB }
- ProjectB.csproj
- packages.config
{ ProjectC }
- ProjectC.csproj
- packages.config
*{ packages} <-- *When I manually paste packages here. So one level above ProjectB.csproj file, then ProjectB compiles.
ProjectA 解决方案包含所有三个项目:A、B 和 C。ProjectA 参考 ProjectB 和 ProjectC。
当我编译 ProjectA(项目 B 和 C 也被编译)时,所有 nuget 包都下载到与解决方案文件相同级别的 {packages} 文件夹中。问题是 ProjectB 没有编译。是的……只有 ProejctB。我什至不会调查为什么只有一个项目可以编译,尽管它们的配置完全相同。总之……
在 ProjectB 和 C 中,当我从 nuget 展开引用 dll 时,它们被视为丢失(带有黄色矩形)。无论如何,ProjectC 无论如何都会编译,但 ProjectB 没有。错误表明它找不到明显位于包文件夹中的参考。
我的问题是,我如何编程/配置该句子(伪代码):
“尊敬的 ProejctB,请在与解决方案文件同级生成的包文件夹中查找引用。解决方案文件,正在尝试编译您。谢谢” em>
PS。所以从技术上讲,dll(参考)的路径将是动态的。它将根据打开/编译项目的解决方案文件而改变。有可能吗?
【问题讨论】:
-
您是否检查了 Manage NuGet Package for Solution... 中每个包依赖项的项目 B 和 C?引用将自动设置。
-
@Jasen 我不确定我是否理解。当我单击 ProjectB 的 Manage NuGet Package for Solution... 时,我可以在已安装选项卡中看到带有“绿色检查”的包。它们被安装并放入解决方案所在的包文件夹中。只是,当我查看 Rereferences 列表时,它们会与黄色警告一起列出。项目生成了它,但看不到它们:/
-
@Jasen 当我将
packages文件夹(手动)粘贴到与ProjectB文件夹相同的级别时(查看我编辑的问题),因此它与“潜在”解决方案文件处于同一级别对于 ProjectB(尽管那里没有 ProjectB.sln 文件)-它将编译。所以 -> ProjectB 在一个位置生成包,然后在另一个位置寻找引用 :/// -
如果您在解决方案上调用该工具,包管理器会显示一个网格,其中包含解决方案下的所有项目 -- 每个项目都有一个复选框。有时在全新安装后,您需要执行还原包。但是参考设置是自动的。如果您遇到问题,您可能需要取消引用包并将其卸载,然后重新安装包。
-
行不通。参考将,相同的包文件夹 - 将,nuget 下载 - 不。您需要将所有项目都放在同一级别。如果您想要不同的级别,则对于每个级别,您都需要解决方案。解决方案有
.nuget\nuget.config。在那里,您可以设置<config> <add key="repositoryPath" value="..\packages" /> </config>。您为每个级别添加`..\`。
标签: c# .net visual-studio nuget nuget-package-restore