发布和调试版本System.IO.FileNotFoundException

时间:2014-07-24 14:55:19

标签: c# visual-studio-2010 build

我有一个非常奇怪的问题,在VS 2010中我能够完美地运行我的应用程序。但是当我构建它或者释放它并运行' .exe'我收到以下错误:

System.IO.FileNotFoundException: Could not load file or assembly [my assembly] or one of its dependencies, Version=1.0.0.0, Culture=nl-NL, PublicKeyToken=null .....
  • 我检查了发布管理和构建顺序,一切正常。
  • 我检查了“复制本地”'选项是' True'。
  • 清理我的解决方案
  • 参考来自解决方案内的其他项目,并由项目参考'添加。
  • Environment.CurrentDirectory与.exe位置相同。

我输了。

2 个答案:

答案 0 :(得分:3)

  

无法加载... Version = 1.0.0.0,Culture = nl-NL,PublicKeyToken = null

此程序集引用存在非常错误,Culture属性不正确。 CLR对于尝试找到这样的程序集非常不稳定。包含代码的程序集必须具有中性的Culture属性Culture=neutral。只有包含本地化资源的附属程序集才具有文化集。它们的加载方式不同,是ResourceManager发出的显式Assembly.LoadFrom()调用。

不确定如何在Visual Studio中避免此问题。我猜托管过程与它有关。您可以尝试禁用它来重现问题,Project + Properties,Debug选项卡。

我不知道你如何将属性设置为“nl-NL”,在我所知道的IDE中肯定没有办法做到这一点。您可以在AssemblyInfo.cs文件中编写[assembly:AssemblyCulture]属性,但是当您这样做时,构建系统会大声抱怨。 Anyhoo,你必须回到neutral来解决你的问题。通常,Fuslogvw.exe实用程序显示程序集解析问题。

答案 1 :(得分:1)

看起来你走在了正确的轨道上。运行应用程序时缺少其中一个引用的程序集。当程序集不在GAC中时,复制本地很重要。 "复制本地"可能没有在那些相关程序集的引用项目中设置属性 - 您应该检查缺少的程序集。

在VS中运行应用程序时,它会根据您的活动配置(调试或发布)运行。您选择了哪两个?默认情况下,它将是Debug。

如果在构建应用程序时使用Debug配置,则.exe将被编译到bin / Debug /文件夹中。是你在哪里运行它并且它不起作用?

当您发布应用程序时,您需要确保复制{appname} .exe文件(和{appname} .pdb文件以获取调试信息),输出文件夹中的所有.dll文件和{appname } .exe.config文件。作为旁注 - 您可以跳过{appname} .vshost.exe和那些相关文件,因为它们不是必需的。