ron*_*nag 224 .net c# compiler-errors reference
我有另一个"无法加载文件或程序集或其中一个依赖项"的问题.
附加信息:无法加载文件或程序集"Microsoft.Practices.Unity,Version = 1.2.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35"或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)
我不知道是什么导致这个或我如何调试它来找到原因.
我已经在我的解决方案目录.csproj文件中进行了搜索,以及我拥有Unity的所有地方:
参考Include ="Microsoft.Practices.Unity,Version = 2.0.414.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35,processorArchitecture = MSIL"
在我的任何项目中找不到任何与1.2.0.0相对应的参考.
任何想法我应该如何解决这个问题?
我也很欣赏如何调试这样的问题的技巧.
Rob*_*nik 58
对我来说,没有其他解决方案有效(包括清洁/重建策略).我找到了另一种解决方法,即关闭并重新打开Visual Studio.
我想这迫使Visual Studio重新加载解决方案和所有项目,重新检查过程中的依赖项.
Ale*_*iev 43
尝试清理解决方案中的Debug和Release文件夹.然后删除并再次添加单位.
小智 18
99%的无法加载文件或程序集或其依赖项之一问题是由依赖项引起的!我建议你按照以下步骤操作:
从http://www.dependencywalker.com/下载Dependency Walker
启动Dependency Walker并打开dll(在我的例子中NativeInterfaces.dll)
您可以在红色错误打开文件中看到一个或多个带有错误的dll ...
这意味着您的系统中缺少此dll; 在我的情况下,DLL名称是MSVCR71.DLL
你可以从谷歌下载misings dll并在正确的路径中复制(在我的情况下c:\windows\system32)
此时,您必须在GAC(全局程序集缓存)中注册新的dll:打开DOS终端并写入:
cd \Windows\System32
regsvr32 /i msvcr71.dll
Run Code Online (Sandbox Code Playgroud)重启你的申请!
小智 16
以下为我工作.
Jas*_*bas 15
检查项目中的Web.config/App.config文件.查看版本号是否正确.
<bindingRedirect oldVersion="X.X.X.X-X.X.X.X" newVersion="X.X.X.X" />
Run Code Online (Sandbox Code Playgroud)
这对我有用.
Reb*_*cca 14
Microsoft Enterprise Library(由.NetTiers引用)是我们的问题,而后者又引用了旧版本的Unity.为了解决这个问题,我们在web.config中使用了以下绑定重定向:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.Practices.Unity" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="1.0.0.0-2.0.414.0" newVersion="2.1.505.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Practices.Unity.Configuration" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="1.0.0.0-2.0.414.0" newVersion="2.1.505.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
Run Code Online (Sandbox Code Playgroud)
或者,您可能只想将企业库更新到最新版本.
mar*_*s19 14
尽管最初的问题是在5年前发布的,但问题仍然存在并且相当令人讨厌.
一般的解决方案是彻底分析所有引用的程序集,以了解出现了什么问题.为了使这个任务更容易,我创建了一个工具(一个Visual Studio扩展),它允许选择.Net程序集(.ddl或.exe文件),并获得所有引用的程序集的图形,其中包含突出显示的冲突或错过的引用.
该工具在Visual Studio库中可用:https://marketplace.visualstudio.com/vsgallery/051172f3-4b30-4bbc-8da6-d55f70402734
Iev*_*ida 10
我有类似的问题.**Juntos答案是正确的**但你应该注意一个重要提示!
对于unity 2.1.505.2,指定了不同的AssemblyVersion和AssemblyFileVersion:

AssemblyFileVersion由nuget使用,但CLR并不关心它!CLR将只使用AssemblyVersion!
因此,重定向应该应用于AssemblyVersion:2.1.505.0中指定的版本
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity name="Microsoft.Practices.Unity" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.1.505.0" newVersion="2.1.505.0" />
</dependentAssembly>
</assemblyBinding>
Run Code Online (Sandbox Code Playgroud)
另请参见: AssemblyVersion,AssemblyFileVersion和AssemblyInformationalVersion之间有什么区别?
我也遇到了这个可怕的错误并为此找到了解决方案......
- 右键单击解决方案名称
- 单击清洁解决方案
- 重新启动Visual Studio
- 转到项目属性>>构建
- 将配置更改为发布
- 开始调试(F5)
1),2)
4),5)
希望这也会对你有所帮助.
小智 5
小智 5
就我而言,bin 文件夹中是一个名为 Unity.MVC3 的非引用 dll,我尝试在 Visual Studio 中搜索对此的任何引用,但没有成功,因此我的解决方案非常简单,只需从 bin 文件夹中删除该 dll。
我遇到了同样的问题,我通过以下说明解决了它:
use the 64bit version of IIS ...| 归档时间: |
|
| 查看次数: |
720828 次 |
| 最近记录: |