无法识别已安装的项目特定的 nuget 包

2024-03-09

我有一个 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”。

更奇怪的是,我现在在互联网上找不到任何东西引用上述技术来引用项目级别的依赖关系。我知道我曾经发现过这一点,但我不知道这是否应该这样做。

所以,我需要知道的主要事情:

  1. 在我的项目构建中可能导致上述错误的原因是什么,以及如何进行 我会修复它吗?
  2. 是什么proper设置nuget包的方法 在一个项目级别? (不是解决方案级别)

好吧,看来包含项目级别配置的技术不受开箱即用的支持一切.

在我的网络项目中,我采取了/packages/Microsoft.Bcl.Build.1.0.14/tools/Microsoft.Bcl.Build.targets文件并修改了它所抱怨的行。

<ValidatePackageReferences Packages="@(ValidatePackages)"
                           ReferencingProject="$(BclBuildReferencingProject)"
                           ReferencingProjectPackagesConfig="$(BclBuildReferencingProjectConfig)"
                           ReferencedProject="$(MSBuildProjectFullPath)"
                           ReferencedProjectPackagesConfig="$(MSBuildProjectDirectory)\packages.config"
                           TreatWarningsAsErrors="$(TreatWarningsAsErrors)" />

我通过替换这一行来做到这一点:ReferencedProjectPackagesConfig="$(MSBuildProjectDirectory)\packages.config"

有了这一行:

ReferencedProjectPackagesConfig="$(MSBuildProjectDirectory)\packages.$(MSBuildProjectName).config"

将项目名称注入属性确实效果很好。如果我从链上更高的其他库(只是“packages.config”)引用其他 nuget 包,这可能会在以后引起问题。但就目前而言,这是一个不错的解决方案。

不过这感觉真的很hacky。我很想听到其他答案,尤其是那些不涉及修改包内部的答案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法识别已安装的项目特定的 nuget 包 的相关文章

  • 将小数格式化为两位或整数

    对于 10 我想要 10 而不是 10 00 对于 10 11 我想要 10 11 没有代码可以实现吗 即通过指定格式字符串类似于 0 N2 decimal num 10 11M Console WriteLine num ToString
  • Linq 在 .Substring() 上抛出异常

    我遇到了一种情况 我需要让 LINQ to Entities 查询根据字符串的长度返回一个子字符串 这是查询 var query from f in Context Files orderby f DateAdded descending
  • 为什么 .NET 异步等待文件复制比同步 File.Copy() 调用消耗更多 CPU?

    为什么下面的代码会产生 public static class Program public static void Main params string args var sourceFileName C Users ehoua Desk
  • 在 C# 中实现动态代理的最佳方法是什么?

    我需要在 C 中创建动态代理 我希望这个类包装另一个类 并采用它的公共接口 转发对这些函数的调用 class MyRootClass public virtual void Foo Console Out WriteLine Foo int
  • 如何在.NET 中编写安全/正确的多线程代码?

    今天我必须修复一些使用线程的旧 VB NET 1 0 代码 问题在于从工作线程而不是 UI 线程更新 UI 元素 我花了一些时间才发现可以使用 InvokeRequired 断言来查找问题 除了上面提到的并发修改问题之外 还可能遇到死锁 竞
  • 字符串与 StringBuilder

    我理解之间的区别String and StringBuilder StringBuilder是可变的 但是两者之间有很大的性能差异吗 我正在开发的程序有很多大小写驱动的字符串附加 500 正在使用StringBuilder更好的选择 是的
  • 自定义 WCF DataContractSerializer

    是否可以用我自己的序列化程序替换 Windows Communication Foundation 中的 dataContractSerializer 如果可能的话 我怎样才能实现这一目标 是的 您可以提供自己的序列化器实现 默认情况下 W
  • 修饰符 async 对此项目无效

    这似乎并不是数百个具有相同错误的其他问题的重复 我把它们都看过了 发现它们是无关的 我正在制作一个小笔记应用程序 并尝试从目录中读取文件 按照 MSDN 示例 我有以下代码 但它给了我一个错误 错误 1 修饰符 async 对此无效 项目
  • 无法更新 .mdf 数据库,因为该数据库是只读的(Windows 应用程序)

    我使用 C 创建了一个数据库 Windows 应用程序 我的应用程序在 Windows XP 上成功运行 但在 Vista 或 Windows 7 系统上无法正确执行 我的应用程序显示类似以下内容的消息 无法更新 mdf 数据库 因为该数据
  • 构建成功时,Intellisense 不断显示错误 Visual Studio 2015

    因此 我正在开发一个 Xamarin 项目 突然 Visual studio 2015 开始崩溃 它几乎在所有内容下都显示错误红线 例如 InitializeComponent 在每个页面中都有红线 项目构建和运行没有错误 错误仅来自 In
  • 使用 wmi 获取活动会话(Win32_LogonSession 还返回非活动/旧会话)

    有没有办法只显示 wmi 的活动会话 问题是 Win32 LogonSession 还显示不活动 断开连接的会话 ManagementScope scope new ManagementScope ManagementPath Defaul
  • 如何暂时暂停实时数据图表的绘制更新

    我想要 暂停 图表的系列更新来完成一些工作 就像我有一个按钮 当我单击它时 它将暂停图表更新 然后当我单击恢复按钮时 它将更新系列中的所有暂停点 我知道关于 chart1 Series SuspendUpdates 但它似乎不适合我 我使用
  • web.config 转换为

    我有针对多个环境的 web config 转换 在配置文件中 我有一个 applicationSettings 部分 其中包含多个设置和值对 我尝试过根据用于匹配名称的语法并更改连接字符串以匹配设置并更改值 但转换失败 这是可能吗 所以我的
  • 学习实体框架[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 为什么该字符串的长度比其中的字符数长?

    这段代码 string a abc string b A C Console WriteLine Length a 0 a Length Console WriteLine Length b 0 b Length outputs Lengt
  • 从嵌入 C# 的浏览器控件获取 HTML 源代码

    我有一个嵌入在 C Windows 应用程序中的浏览器控件 我想获取渲染的 HTML 可能已被 javascript 修改 而不是原始 HTML 有什么建议么 您可以获取 HTML 并确实设置它 使用WebBrowser DocumentT
  • FileInfo.BaseName 存在于 PowerShell 中,但不存在于直接 .NET 中

    为什么在 NET 中System IO FileInfo对象没有BaseName属性 但我可以通过 PowerShell 使用该属性 例如 FolderItems Get ChildItem Path C Where Object isno
  • 标签中的路径显示

    NET 中有没有自动修剪路径字符串的方法 例如 C Documents and Settings nick My Documents Tests demo data demo data emx becomes C Documents dem
  • C# 中单个 & 符号的第二个含义是什么?

    我在 C 中使用了单个与号 来表示 检查second条件语句即使第一个是false 但以下似乎是不同的意思 of 总而言之 谁能解释一下如何i 1在下面的例子中有效吗 List
  • 从 Delphi 调用 C# dll

    我用单一方法编写了 Net 3 5 dll 由Delphi exe调用 不幸的是它不起作用 步骤 1 使用以下代码创建 C 3 5 dll public class MyDllClass public static int MyDllMet

随机推荐