2014-03-28 13 views
1

我正在用C#编写一个应用程序与Visual Studio 2010和接近结束与我的应用程序的工程。为了测试我使用3吨不同的机器:c#.NET应用程序在3台机器中的1台机器上启动时崩溃System.IO.FileNotFoundException

机答:Workstation-PC (Intel CPU, Win 7 64Bit, .NET 4.0)

机B:Private PC (Intel CPU, Win7 64Bit, .NET 4.0)

机C:Labor-PC (AMD64, Win7 64Bit, .NET 4.0)

我要为最终版本独立的.exe文件。无论我在解决方案文件夹中运行应用程序还是将其复制到任何目录并在其中运行,该应用程序都像机器A和B上的魅力一样。它始终工作(因为它应该)。但是,计算机C抛出一个错误,直接在应用程序启动并输出“ ... WERInternalMetadata.xml‘-file它说’System.IO.FileNotFoundException”:

CLR20r3 myapp.exe 1.0.0.0 53318d78 Testreporter 1.0.0.0 53318d78 5d f System.IO.FileNotFoundException

但是,当我开始在溶液中的应用文件夹(例如... myapp \ bin \ x64 \ Debug),其中包含* .dll文件,该应用程序完美无缺地运行。 这是否意味着程序在根目录中搜索它的依赖关系?

我已经检查了代码中的引用。此外,如果参考文献有任何问题,该应用程序不会在机器B上运行...

我觉得好奇的是,机器A和B运行程序没有问题,无论我在哪里放置.exe,但机器C只在放置在特定路径中时正确运行我的应用程序....

也许处理器在那里起作用?有关如何解决这个问题的任何想法?

答案: 如何构建一个.exe文件,该文件已经包含了我的应用程序所需的所有依赖项和库。一个独立的-EXE这么说......

非常感谢您

+0

是所有三台机器管理员的用户,还是失败用户可能不是管理员? –

+0

是的所有用户都以管理员身份登录。 并且所有的计算机都运行SP1。 – user3443859

回答

0

它看起来像EXE能找到在GAC机器上A和B必要的DLL,但未能在机这样做C.因此,只有特定的路径正在工作。

请检查GAC。

此外,嵌入的DLL为EXE文件,请参阅本SO主题:Embedding DLLs in a compiled executable

+0

是的,你可能是对的。请参阅下面的答案。 我想我应该检查一下GAC。 – user3443859

+0

这导致我的解决方案: http://stackoverflow.com/questions/21627042/system-io-filenotfoundexception-where-do-i-find-what-path-is-wrong?rq=1 详细的答案尽快跟进.... – user3443859

0

我发现有类似的话题线程,导致我的解决方案:

System.IO.FileNotFoundException. Where do I find what path is wrong?

我也使用Power Pack。当我从解决方案目录中删除“ Microsoft.VisualBasic.PowerPacks.Vll.dll”并启动应用程序时,我的程序因描述错误而失败。复制回来,然后再次启动应用程序是成功的。所以我想我的目标机器(机器C)需要安装Power Pack。

所以我想我可以通过4种方式解决这个问题?:

1。)将“ Microsoft.VisualBasic.PowerPacks.Vll.dll”与.exe放在同一文件夹中,然后启动我的应用程序。

2.)安装手动安装PowerPack.dll到GAC所述的PowerPack http://go.microsoft.com/fwlink/?LinkID=145727&clcid=0x804

3.)。或者让他们向海关总署与相应的工具,这里所描述http://msdn.microsoft.com/en-us/library/yf1d93sz%28v=vs.110%29.aspx

4)嵌入该.dll右转入该.exe

我说得对不对?

非常感谢您的帮助!

相关问题