【发布时间】:2015-03-04 18:37:10
【问题描述】:
我的 C# 项目有问题。这是我的场景。
我有一个外部 dll,比如说 original.dll,我需要将它包装起来,以便它可以在多个 vb.net 应用程序中使用,所以我正在制作另一个 dll 来包装这个名为 external.dll 的原始 dll。所以当我开发这个类库 dll 时,我使用一个简单的控制台项目来测试它,我包含了引用,构建和测试它没有问题......至少是第一次,因为当我尝试重建时我的库并再次运行它会引发异常
FileNotFoundException
无法加载文件或程序集 'LynkLib, Version=1.0.5533.27875, Culture=neutral, PublicKeyToken=null' 或其任何依赖项。
我已经仔细检查了 VS 中的引用以及我文件夹中的文件。我尝试重新启动 VS,但什么也没有。
这是我的代码,但我不知道它是否有帮助,因为我认为这是某种配置问题。
外部库
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
...
}
}
}
更新
我发现问题出在original.dll。我不能修改那个dll的代码,我只能编辑external.dll。我反编译了原来的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和// ISSUE: variable of a boxed type
我也将我的 .NET 版本降级到 4.0,但仍然有问题。有什么想法吗?
【问题讨论】:
-
DLL 的目标是 .NET 框架的更高版本,而不是引用它的控制台应用程序吗?
-
控制台应用程序和类库dll在同一个.NET版本,即4.5版
-
“Original.dll”和“external.dll”当错误是关于“LynkLib”时是无用的名称。使用 Fuslogvw.exe 解决程序集解析问题。注意自动生成的版本号,例如 1.0.5533.27875
-
@HansPassant 我不知道我是否正确,但 LynkLib 名称是对 Lynk 类的引用,因为我没有任何类、对象或名为 LynkLib 的文件。 .cs 文件称为 Lynk.cs,引发异常的对象的类是
Lynk。还有两件事,我不知道如何使用Fuslogvw.exe,而且我还注意到了自动生成的版本号,因为我检查了我的 assemblyInfo.cs 文件,我有版本 1.0.0.0 的AssemblyVersion和AssemblyFileVersion