Vin*_*mth 10 c# asp.net-mvc packages visual-studio nuget
我正在AvsAn使用Nuget包管理器安装(2.1.0)包.我期待引用路径是到packages目录,如:
C:\程序\包\ AvsAn.dll
但是添加了对bin目录的引用:
C:\程序\命名空间\ BIN\AvsAn.dll
令人困惑的是,某些软件包发生了这种情况,但其他软件包却没有(例如,引用路径是package文件夹,正如预期的那样)
我们发现同一解决方案中的不同项目使用不同的版本.此外,单个项目可能在该<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(例如 - 在我们的示例中,它是Service Stack包).虽然这在技术上不是一个版本(它只是系统上文件的路径),但它通常对应于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 restor重新创建和填充,并且该\bin目录将在下一次构建解决方案时重新创建并填充.