C#学习教程:加载重命名的C#程序集抛出FileNotFoundException由于我们的编码标准,有一条规则是调试DLL以“d”为后缀(例如,ProjectA.dll变成ProjectAd.dll)。当我将对重命名的DLL的引用添加到应用程序时,它构建成功,但在执行时抛出FileNotFoundException。抛出的错误如下:System.IO.FileLoadException:Couldnotloadfileorassembly'ProjectA,Version=1.0.0.0,Culture=neutral,PublicKeyToken=49df7f988e86ed92'或其依赖项之一。找到的程序集的匹配清单定义不是程序集引用。(HRESULT异常:0x80131040)文件名:'ProjectA,Version=1.0.0.0,Culture=neutral,PublicKeyToken=49df7f988e86ed92'程序集管理器还发出警告和错误:WRN:比较程序集名称导致不匹配:PUBLICKEYTOKEN错误:无法完成程序集设置(hr=0x80131040)。探测终止。从报错信息来看,好像是在找一个没有d后缀的程序集。顺便说一句,同一个应用程序引用了一个C++/CLI程序集。它有一个d附加到它,但查看VS2005中引用的属性表明安全ID正确地附加了一个d。C#引用在属性窗口中没有附加d。我应该怎么做才能调试C#程序集?我尝试修改AssemblyInfo.cs中的条目但无济于事。这是清单文件可以解决的问题吗?不幸的是,您只能通过重命名程序集来完成此操作。程序集的名称通过编译写入其元数据。稍后更改其文件名时,其元数据中的名称实际上并未更改。然后通过第二次编译,从元数据中读取引用程序集的名称并将其写入新构建的程序集。在运行时,CLR将在引用程序集元数据的名称int上搜索引用程序集。但是,它不会在任何探测路径中找到它,因此会抛出exceptionFileNotFound。您可以通过编辑引用程序集的项目文件来解决此问题。您可以通过右键单击解决方案资源管理器中的项目属性并选择卸载项目来执行此操作。然后右键单击卸载的项目并选择EditProject。将其粘贴到第一个标记ItemGroup之前...$(AssemblyName)d...这是msbuild脚本的条件AssemblyName属性。仅当配置设置为“调试”值时才会应用,并将采用上面定义的AssemblyName并向其添加“d”。您现在将在文件名和元数据中使用“d”名称。当您更改回Release配置时,该属性将被省略。以上就是C#学习教程:LoadingtherenamedC#assemblythrowsFileNotFoundException的全部内容分享。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
