如何在.NET中启用程序集绑定失败日志记录(Fusion)?
我目前正在开发一个.NET应用程序,它包含20个项目.其中一些项目是使用.NET 3.5编译的,其他一些项目仍然是.NET 2.0项目(到目前为止没问题).
问题是,如果我包含一个外部组件,我总会收到以下警告:
"Found conflicts between different versions of the same dependent assembly".
Run Code Online (Sandbox Code Playgroud)
这个警告究竟是什么意思,是否有可能排除这个警告(比如在源代码文件中使用#pragma disable)?
我已经创建了一个.NET .DLL文件,我想在GAC中注册.
我在Windows Server 2003命令提示符中使用了此命令:
C:\"Path of dll"\>gacutil /i dllname.dll
'gacutil' is not recognized as an internal or external command,
operable program or batch file.
Run Code Online (Sandbox Code Playgroud)
它说路径不正确.
我是否需要在.NET cmd提示符中使用它?如果是这样,我无法找到.NET cmd提示符.
我有一个以前在Windows 8.1上使用VS 2013构建的WinJS项目.
最近我通过创建一个空白的Javascript Universal windows 10项目将该项目升级到Universal Windows 10,然后从旧项目添加了我的所有文件.
我有Windows运行时组件以及SQLite的类库.
我添加了通用Windows运行时组件和通用类库,并将我的所有文件从旧项目复制到各自的位置.
不知何故,我设法删除所有构建错误.
我安装了所有必需的SQLite-net,SQLite for Universal Windows Platform,Newtonsoft等.
但是当我运行应用程序并在Windows运行时组件中调用Native方法时,它会产生一些奇怪的错误:
An exception of type 'System.IO.FileNotFoundException' occurred in mscorlib.ni.dll but was not handled in user code.
Additional information: Could not load file or assembly 'Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The system cannot find the file specified.
Newtonsoft版本是:9.0.1
我的Windows运行时组件的project.json文件如下:
{
"dependencies": {
"Microsoft.NETCore.UniversalWindowsPlatform": "5.0.0",
"Newtonsoft.Json": "9.0.1"
},
"frameworks": {
"uap10.0": {}
},
"runtimes": {
"win10-arm": {},
"win10-arm-aot": {}, …Run Code Online (Sandbox Code Playgroud) c# visual-studio win-universal-app windows-10 windows-10-universal
我正在尝试使用SocketIO4Net在.net中创建socket.io客户端.看来SocketIO4Net依赖于Newtonsoft.Json> = 4.0.8.我也使用PushSharp库,其Newtonsoft.Json依赖关系> = 4.5.10.当我第一次安装PushSharp时,我得到了NewtonSoft.Json 4.5.11,我认为这个版本也应该支持SocketIO4Net,因为它的版本更高,但每次尝试连接socket.io服务器时都会收到此错误.
无法加载文件或程序集'Newtonsoft.Json,Version = 4.0.8.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)
我一直在为这些依赖性问题敲打我的脑袋,如果有人能指出我正确的方向,我将非常感激.
我将我的项目迁移到mvc 5.0并使用Microsoft Instruction将 razor engin 3迁移
但是打开我的解决方案时得到这个:
Web项目"ProjectName"需要缺少与Visual Studio一起运行的Web组件.您是否要立即使用Web平台安装程序下载并安装它们?(注意:某些组件可能需要重新启动才能生效.)
使用Razor语法3.0.0.0的ASP.NET网页
但这些答案对我没有帮助,我感谢你的帮助
更新: 我的项目构建很好,并且没有任何例外使用razor 3和mvc 5,但只是Intellisense没有感知我的打字和着色我的代码
并且当在Application web Config文件中将此行更改为Value ="2.0.0.0"时,错误消失并且intelisens工作正常
<appSettings>
<add key="webpages:Version" **value="3.0.0.0"** />
...
</appSettings>
Run Code Online (Sandbox Code Playgroud)
更新 一段时间后,现在你可以使用razor 3 on vs 2012. 在这里你可以升级
我有一个名为"MyAssembly"的类库,它在内部引用a.dll,版本3.1.1.0的b.dll; 我已经构建了一个超出MyAssembly.dll的项目.在另一个系统(框)上,我创建了一个Web应用程序项目并引用了MyAssembly.dll.新系统有新版本的a.dll和b.dll 4.0.0; 我在web.config中使用绑定重定向,如下所示.但仍然无法编译Web应用程序.它说缺少程序集引用a.dll,版本3.1.1.0.
任何人都可以帮助解决这个问题吗?
谢谢,Suresh
我们与MongoDB一起使用的每个项目都会在没有加载的System.Runtime.InteropServices库中出现问题.
这次错误很有趣:
外部异常找不到lib的4.3.0.0版本.但是内部异常找不到版本4.0.0.0
有没有人对此有所了解?
有关此问题的更多信息:
所以,NuGet已经安装了4.3.0.0
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="System.Runtime" version="4.3.0" targetFramework="net462" />
<package id="System.Runtime.InteropServices.RuntimeInformation" version="4.3.0" targetFramework="net462" />
</packages>
Run Code Online (Sandbox Code Playgroud)
packages.config确认我已经安装了4.3.0.0,
然而,app.config似乎总是与现实不同步:
<dependentAssembly>
<assemblyIdentity name="System.Runtime.InteropServices.RuntimeInformation" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
</dependentAssembly>
Run Code Online (Sandbox Code Playgroud)
添加了关于版本4.0.1.0的一行
在同一行.. csproj是胡说八道:
<Reference Include="System.Runtime.InteropServices.RuntimeInformation, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>x:\Packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>
</Reference>
Run Code Online (Sandbox Code Playgroud)
因为它声称引用4.0.1.0的路径为4.3.0.0
有一些东西被破坏了,它总是发生在那个完全相同的lib上; 不仅仅是这个项目:在我包含MongoDB的任何地方,这个lib都是一个依赖项,每次都有一些随机问题.
当我尝试手动加载时:
var Name = new AssemblyName("System.Runtime.InteropServices.RuntimeInformation, Version=4.3.0.0");
var Asm = Assembly.Load(Name);
Run Code Online (Sandbox Code Playgroud)
它也失败了.
我发现System.Runtime.InteropServices.RuntimeInformation.dll不会被复制到build文件夹,即使它包含在项目中.
我找到了一个讨厌的解决方法:如果我在主exe中包含MongoDB,即使我不使用它,它依赖于Interop lib,这迫使lib被复制到build文件夹,然后后续调用工作.
c# ×5
.net ×4
assemblies ×2
binding ×2
asp.net-mvc ×1
dependencies ×1
gac ×1
interop ×1
json.net ×1
migrate ×1
nuget ×1
razor ×1
socketio4net ×1
vb.net ×1
warnings ×1
windows-10 ×1