相关疑难解决方法(0)

Newtonsoft.json汇编包版本不匹配

我正在尝试使用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)

我一直在为这些依赖性问题敲打我的脑袋,如果有人能指出我正确的方向,我将非常感激.

c# dependencies json.net nuget socketio4net

26
推荐指数
3
解决办法
4万
查看次数

我可以让我的程序集引用任何版本的另一个程序集吗?

  • 我正在开发一个类库(MyClassLibrary).
  • 我依赖第三方类库(ThirdPartyClassLibrary).
  • 我需要使用与ThirdPartyClassLibrary我的用户相同的版本.例如,如果我在ThirdPartyClassLibrary用户中设置静态值,则需要查看该更改.
  • 我班级的用户可能依赖于4个不同版本中的任何一个ThirdPartyClassLibrary.
  • ThirdPartyClassLibrary 很大,我不想用我的软件分发它.
  • 我已经反映了所有4个版本ThirdPartyClassLibrary并验证了我将使用它们做的事情在所有版本中是兼容的(接口是相同的,方法签名是相同的,等等).
  • 我需要打电话ThirdPartyClassLibrary才能保持高效!每次我需要打电话时,我都无法反思一切.
  • MyClassLibrary 将在运行时加载,所以我不能指望用户搞乱程序集绑定重定向或其他开发时间设置(或任何设置,我的用户都无法做任何事情).
  • 我想从编译时检查我的代码中受益,所以理想情况下根本没有反射.

我如何编写MyClassLibrary这样的信息,当它加载到进程中时,无论ThirdPartyClassLibrary用户加载了哪个版本,一切都能正常工作?

.net c# .net-3.5 c#-5.0

13
推荐指数
2
解决办法
7613
查看次数

c# - 你可以对强名称程序集进行"弱"程序集引用

由于各种原因,我宁愿不在我的项目中使用强名称(签名)程序集.但是,其中一个项目由sharepoint Web部件引用,这意味着它必须签名.

是否可以对此程序集进行签名,但是当我从其他项目引用它时,使用非强引用来执行此操作.这将给我的优势是为我的其余代码提供一个非签名程序集,但仍然允许它由sharepoint加载.

c# assemblies assembly-signing signed-assembly

6
推荐指数
1
解决办法
3474
查看次数

如何在运行时检测缺少的.NET引用?

我的应用程序包含对外部库(SQL Server管理对象)的引用.显然,如果运行时系统中不存在该库,则只要没有调用使用此库中的类的方法,应用程序仍然可以工作.

问题1:这是指定行为还是CLR加载库的方式(幸运)副作用?

要检测引用是否可访问,我目前使用如下代码:

Function IsLibraryAvailable() As Boolean
    Try
        TestMethod()
    Catch ex As FileNotFoundException
        Return False
    End Try
    Return True
End Function

Sub TestMethod()
    Dim srv As New Smo.Server()  ' Try to create an object in the library
End Sub
Run Code Online (Sandbox Code Playgroud)

它有效,但似乎很难看.注意如果TestMethod的是一个单独的方法,它才能正常运行,否则异常将在抛出开头IsLibraryAvailable(在try-catch之前,即使对象实例化try-catch块内occurrs).

问题2:有更好的选择吗?

特别是,我担心函数内联等优化可能会阻止我的代码工作.

.net reference .net-assembly

6
推荐指数
1
解决办法
330
查看次数

需要一个C#程序集来松散地引用一个强命名的程序集

所以这就是问题所在.我正在写一些StyleCop插件组件,供我工作的公司使用.因此,这些程序集需要引用Microsoft.StyleCop.CSharp.dll,例如强名称.

问题在于,如果我构建它并将其传递给我的组中的开发人员,则它们必须具有相同版本的StyleCop dll(当前为4.3.3.0)或者无法加载.

使我的附加规则DLL更独立的最佳方法是什么?我应该在GAC中安装我的4.3.3.0版本的那些从属StyleCop dll吗?程序集(与应用程序)可以使用策略文件吗?

哦,其中一个主要问题是我希望它可以与客户安装的任何版本的StyleCop(或至少4.3.3.0或更高版本)一起使用.

提前谢谢了.

c# versioning assemblies class-library stylecop

4
推荐指数
1
解决办法
693
查看次数