我有一个Web项目,由于NuGet错误而无法构建。
我们有许多网站都使用名为Sitecore的Web CMS。不同的网站使用不同的版本。因此,我们有一个通用库,可以针对许多版本进行定位,如这里所述。
因此,我有一个如下所示的项目结构。请记住,这是逻辑表示。考虑到所有这些文件都在解决方案的根目录中。
- Common.sln
- Common.SC65.csproj - MyClass.cs [shared] - MyClass.SC65.cs - **packages.Common.SC65.config**
- Common.SC70.csproj - MyClass.cs [shared] - MyClass.SC70.cs - **packages.Common.SC70.config**
- Common.SC72.csproj - MyClass.cs [shared] - MyClass.SC72.cs - **packages.Common.SC72.config**
这是我现在遇到的错误:
``` C:\Path\Website.ProjectSC65\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets(225,5): error : Could not locate C:\Path\Common\packages.config. Ensure that this project has Microsoft.Bcl.Build installed and packages.config is located next to the project file. ```
这让我相信问题出在Bcl targets文件中,它似乎在喊这一行:
我们有许多网站都使用名为Sitecore的Web CMS。不同的网站使用不同的版本。因此,我们有一个通用库,可以针对许多版本进行定位,如这里所述。
因此,我有一个如下所示的项目结构。请记住,这是逻辑表示。考虑到所有这些文件都在解决方案的根目录中。
- Common.sln
- Common.SC65.csproj - MyClass.cs [shared] - MyClass.SC65.cs - **packages.Common.SC65.config**
- Common.SC70.csproj - MyClass.cs [shared] - MyClass.SC70.cs - **packages.Common.SC70.config**
- Common.SC72.csproj - MyClass.cs [shared] - MyClass.SC72.cs - **packages.Common.SC72.config**
这是我现在遇到的错误:
``` C:\Path\Website.ProjectSC65\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets(225,5): error : Could not locate C:\Path\Common\packages.config. Ensure that this project has Microsoft.Bcl.Build installed and packages.config is located next to the project file. ```
这让我相信问题出在Bcl targets文件中,它似乎在喊这一行:
<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'。
更奇怪的是,我现在找不到任何关于引用项目级别依赖项的上述技术的信息。我知道我曾经找到过这个,但我不知道这是否是正确的方法。
所以,我需要知道以下主要事项:
- 在我的项目构建中,可能是什么原因导致上述错误,如何修复?
- 在项目级别上设置nuget包的正确方法是什么?(而不是解决方案级别)