我有一个 Web 项目,由于 nuget 错误而无法构建。
我们有许多网站都使用名为 Sitecore 的网络 CMS。我们不同的网站在不同的版本下运行。因此,我们有一个针对多个版本的通用库如此处所述 https://stackoverflow.com/a/25430977/2283050.
所以,我有一个如下所示的项目结构。请记住这是一个logical表示。考虑所有这些文件都位于解决方案的根目录。
- Common.sln
- Common.SC65.csproj
- MyClass.cs [共享]
- MyClass.SC65.cs
- 包.Common.SC65.config
- Common.SC70.csproj
- MyClass.cs [共享]
- MyClass.SC70.cs
- 包.Common.SC70.config
- Common.SC72.csproj
- MyClass.cs [共享]
- MyClass.SC72.cs
- 包.Common.SC72.config
这是我现在遇到的错误:
C:\Path\Website.ProjectSC65\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets(225,5):错误:无法找到 C:\Path\Common\packages。配置。确保此项目已安装 Microsoft.Bcl.Build 并且packages.config 位于项目文件旁边。
这让我相信问题出在 Bcl 目标文件中,并且它似乎在大喊这一行:
<ValidatePackageReferences Packages="@(ValidatePackages)"
ReferencingProject="$(BclBuildReferencingProject)"
ReferencingProjectPackagesConfig="$(BclBuildReferencingProjectConfig)"
ReferencedProject="$(MSBuildProjectFullPath)"
ReferencedProjectPackagesConfig="$(MSBuildProjectDirectory)\packages.config"
TreatWarningsAsErrors="$(TreatWarningsAsErrors)" />
“Website.ProjectSC65”引用了 Common.SC65。
我偶尔会遇到奇怪的问题,nuget 包表现得很有趣,但无论我做什么,我似乎都无法摆脱这个问题。主要是一些Update-Package -reinstall
组合解决了我的问题。我每个项目都需要这些不同的包,因为它们支持不同版本的框架。
我完全知道它正在寻找技术上不存在的包文件,因为它应该引用“packages.Common.SC65.config”。
更奇怪的是,我现在在互联网上找不到任何东西引用上述技术来引用项目级别的依赖关系。我知道我曾经发现过这一点,但我不知道这是否应该这样做。
所以,我需要知道的主要事情:
- 在我的项目构建中可能导致上述错误的原因是什么,以及如何进行
我会修复它吗?
- 是什么proper设置nuget包的方法
在一个项目级别? (不是解决方案级别)