C# 发布并调试版本System.IO.FileNotFoundException

C# 发布并调试版本System.IO.FileNotFoundException,c#,visual-studio-2010,build,C#,Visual Studio 2010,Build,我有一个非常奇怪的问题,在VS2010中,我能够完美地运行我的应用程序。但是,当我构建或释放它并运行“.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 ..... 我检查了发布管理和构建顺序,一切

我有一个非常奇怪的问题,在VS2010中,我能够完美地运行我的应用程序。但是,当我构建或释放它并运行“.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”状态
  • 清洗了我的溶液
  • 引用来自解决方案中的不同项目,并通过“项目引用”添加
  • 环境.CurrentDirectory
    与.exe位置相同

我迷路了。

看来你走对了方向。运行应用程序时缺少一个引用的程序集。当程序集不在GAC中时,复制本地非常重要。在引用的项目中,不能为那些相关的程序集设置“复制本地”属性-您应该在那里检查缺少的程序集

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

如果在构建应用程序时使用调试配置,则.exe将编译到bin/Debug/文件夹中。这就是你运行它的地方,但它不起作用吗


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

看来您的思路是正确的。运行应用程序时缺少一个引用的程序集。当程序集不在GAC中时,复制本地非常重要。在引用的项目中,不能为那些相关的程序集设置“复制本地”属性-您应该在那里检查缺少的程序集

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

如果在构建应用程序时使用调试配置,则.exe将编译到bin/Debug/文件夹中。这就是你运行它的地方,但它不起作用吗

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

无法加载。。。版本=1.0.0.0,区域性=nl nl,PublicKeyToken=null

此程序集引用有一些非常错误,区域性属性不正确。CLR在试图找到这样一个程序集时会非常古怪。包含代码的程序集必须具有中性区域性属性,
Culture=neutral
。只有包含本地化资源的附属程序集具有区域性集。它们的加载方式不同,ResourceManager发出一个显式的Assembly.LoadFrom()调用

不太清楚您是如何在VisualStudio中避免此问题的。我猜托管过程与此有关。您可以尝试禁用它以重新处理问题,项目+属性,调试选项卡

我不知道您是如何将属性设置为“nl-nl”的,据我所知,在IDE中肯定没有任何方法可以做到这一点。您可以在AssemblyInfo.cs文件中写入[assembly:AssemblyCulture]属性,但这样做时生成系统会大声抱怨。无论如何,你必须让它回到中性状态才能解决你的问题。通常,Fuslogvw.exe实用程序会显示程序集解析问题

无法加载。。。版本=1.0.0.0,区域性=nl nl,PublicKeyToken=null

此程序集引用有一些非常错误,区域性属性不正确。CLR在试图找到这样一个程序集时会非常古怪。包含代码的程序集必须具有中性区域性属性,
Culture=neutral
。只有包含本地化资源的附属程序集具有区域性集。它们的加载方式不同,ResourceManager发出一个显式的Assembly.LoadFrom()调用

不太清楚您是如何在VisualStudio中避免此问题的。我猜托管过程与此有关。您可以尝试禁用它以重新处理问题,项目+属性,调试选项卡


我不知道您是如何将属性设置为“nl-nl”的,据我所知,在IDE中肯定没有任何方法可以做到这一点。您可以在AssemblyInfo.cs文件中写入[assembly:AssemblyCulture]属性,但这样做时生成系统会大声抱怨。无论如何,你必须让它回到中性状态才能解决你的问题。通常,Fuslogvw.exe实用程序会显示程序集解析问题。

因此,如果在调试文件夹中的VS之外执行,而不是在发布文件夹中执行,则应用程序可以工作?请尝试清理解决方案中的调试和发布文件夹,删除并重新添加程序集引用,和重建。@Steve No该应用程序仅在visual studio的上下文中运行时有效。所有构建的应用程序均未运行,它们都会出现JIT错误。我可以给您提供此链接。您可能会在此处找到解决问题的工具和提示。因此,如果在调试文件夹中的VS之外执行,而不是在发布文件夹中执行,则应用程序会正常工作?请尝试清理解决方案中的调试和发布文件夹,删除并重新添加程序集引用,然后重新生成。@否该应用程序仅在visual studio的上下文中运行时有效。没有一个构建的应用程序运行,它们都给出了JIT错误