我正在使用 Nuget 包管理器安装 AvsAn
(2.1.0) 包。我希望引用路径是包目录,例如:
但是添加了对 bin 目录的引用:
令人困惑的是,某些包会发生这种情况,但其他包不会发生这种情况(即引用路径是包文件夹,正如预期的那样)
我试过的
最佳答案
我们发现同一解决方案中的不同项目使用彼此不同的版本。此外,单个项目可能具有 <Reference>
元素中列出的版本,而不是 HintPath
中列出的版本。
我们只是浏览了每个 .csproj 文件并手动编辑它们以使所有内容同步。
<Reference
开头的行,其中包含相关 dll 的信息。 <Reference Include="SomeAssembly, Version=4.0.54">
。在此之后可能还有一些额外的文本,例如 Culture
和/或 PublicKey
等。我们只对 Version 属性感兴趣。 <HintPath>
中的 <Reference
元素,它将包含 VS 期望的那个 dll 的路径(VS 将首先查看)。 ..\packages\SomePackage.4.0.56\lib\net45\SomeAssembly.dll
(例如 - 在我们的例子中它是服务堆栈包)。虽然这在技术上不是一个版本(它只是系统上文件的路径),但它通常对应于 dll 的版本。 在我们的例子中,我们从 ServiceStack 4.0.54 迁移到 4.0.56。一些
Include
引用指向 4.0.56,而路径仍然指向 4.0.54 版本。因为提示路径没有指向预期的 dll VS 在别处查找,它在项目的 \bin\debug
目录中找到了它认为可以接受的匹配项。这不是正确的版本。至于改变什么,改变什么,这取决于你的具体情况。
这很可能是由糟糕的合并造成的。
此外,我们清除了项目文件夹下的
\bin
和 \packages
目录。重新加载解决方案并让 Nuget 恢复。这只是为了清除问题,以便 Nuget 可以只提取它需要的软件包及其版本。它可以防止 VS 使用可能位于项目 \bin
目录中的错误版本。两者都可以安全删除。 \packages
文件夹将通过 Nuget 恢复器重新创建和填充,\bin
目录将在解决方案的下一次构建时重新创建和填充。关于c# - 从 Nuget 安装添加了对 bin 目录的引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37111837/