我的C#项目出了问题。这是我的情景。
我有一个外部dll让我们说original.dll
我需要将它包装好以便它可以在多个vb.net应用程序中使用,所以我要制作另一个dll来包装这个名为{{1}的原始dll }。所以当我正在开发这个类库dll时,我正在使用一个简单的控制台项目来测试它,我包含了引用,构建并测试它没有问题...至少第一次,因为当我尝试重建时我的库再次运行它会引发异常
FileNotFoundException异常
无法加载文件或程序集'LynkLib,Version = 1.0.5533.27875,Culture = neutral,PublicKeyToken = null'或其任何依赖项。
我已经双重检查了VS中的引用,以及我文件夹中的文件。我尝试重新启动VS而没有。
这是我的代码,但我不知道它是否有帮助,因为我认为是某种配置问题。
external.dll
using System.IO;
using System.Net;
...
[assembly: CLSCompliant(true)] //to use also in vb.net
namespace externalDLL{
[ComVisible(true)]
public class Lynk
{
//...my code
}
}
我发现问题出在...
using externalDLL;
namespace TestLynk
{
class Program
{
static void Main(string[] args)
{
externalDLL.Lynk l = new Lynk(); //Here the exception is triggered
...
}
}
}
上。我无法修改该DLL的代码,我只能编辑original.dll
。我反编译原始的dll,我可以看到以下汇编信息
external.dll
在剩下的代码中,我可以看到很多问题,有很多,但他们基本上说两件事using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
// Assembly LynkLib, Version=1.0.5533.27875, Culture=neutral, PublicKeyToken=null
// MVID: E24FF563-B283-431E-9D53-71A59E4750E1
// References: System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// References: mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// References: System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
// References: System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
[assembly: AssemblyTitle("LynkLib")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("###")]
[assembly: AssemblyProduct("###")]
[assembly: AssemblyCopyright("###")]
[assembly: AssemblyTrademark("")]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: AssemblyVersion("1.0.5533.27875")]
和// ISSUE: explicit constructor call
我还将我的.NET版本降级为4.0但仍有问题。有什么想法吗?
答案 0 :(得分:1)
通常情况下,当您引用构建到不同.net目标或平台(x86或64位)的dll作为当前项目的设置时。否则,其中一个dll正在引用另一个无法找到的dll。您可以从JetBrains免费下载DotPeek并安装。用DotPeek打开dll,看看他们引用了哪些其他dll。