我有一个非常奇怪的问题,在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 .....
Environment.CurrentDirectory
与.exe位置相同。我输了。
答案 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和那些相关文件,因为它们不是必需的。