Mono - 无法加载文件或程序集

3
我刚刚把我的项目导出到新的iMac上,并将解决方案加载到Monodevelop中。 成功编译后,我启动了该项目,但是一直收到相同的错误。
警告:无法从“/private/var/folders/9y/9ypfv24bEwieHw+Yy+PUsU+++TI/-Tmp-/nhu-temp-aspnet-0/ebc9e2c6/assembly/shadow/7f5f6265/859daf16_fac2cd73_00000001/Centrism.Administration.UI.dll”中引用下列程序集: 程序集:Centrism.Core (assemblyref_index = 3) 版本:0.0.3688.40278 公钥:(无) 该程序集未在全局程序集缓存、MONO_PATH环境变量所列路径或执行程序集的位置(“/var/folders/9y/9ypfv24bEwieHw+Yy+PUsU+++TI/-Tmp-/nhu-temp-aspnet-0/ebc9e2c6/assembly/shadow/7f5f6265/859daf16_fac2cd73_00000001/”)中找到。
无法加载文件或程序集“Centrism.Core, Version=0.0.3688.40278, Culture=neutral, PublicKeyToken=null”或其其中一个依赖项。在其他项目中,该程序集可以正常使用并加载。
4个回答

5

我曾经遇到过一个问题,就是一个dll文件和应用程序集在同一路径下,但是这个dll文件名的大小写与预期不符。因此Abc.dll文件丢失了,在文件夹中它被命名为abc.dll,在改名之后,问题得到了解决。


2

我猜我要问一个显而易见的问题:

你是否有Centrism.Core.dll,并且Mono知道在哪里可以找到它?


1
你好,感谢你的回答。 通常将其包含在项目解决方案中是很正常的。但我还将MONO_PATH变量设置为一个全局路径,用于编译我的程序集。 但无论如何它都无法运行。 - nhu
如果您添加以下环境变量,它应该会产生更多关于Mono正在尝试加载的信息:MONO_LOG_LEVEL="debug" MONO_LOG_MASK="dll"。 - jpobst

1
如果您的项目引用了Centrism.Administration.UI.dll,并且它没有在您的iMac上的GAC中,最简单的解决方案可能是将该程序集的引用设置为“本地副本”。对于Web项目,这将把程序集复制到应用程序的Bin目录中,xsp应该能够找到它。

1
当我向一个已存在的项目添加新程序集时(该项目本身被一个单元测试项目引用),我遇到了这个错误。
因为该程序集没有被两个项目都包含,所以单元测试会出现错误。解决方案是在项目文件中添加一个“Copy”标签:
<Copy SourceFiles="$(ProjectDir)\dlls\NewAssembly.dll" DestinationFolder="$(OutputPath)" SkipUnchangedFiles="true" />

假设直接将引用添加到单元测试中也可以起作用(此引用未直接使用,因此能够避免使用上述方法)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接