我有一个.net应用程序,它使用的是从我公司电气设计师使用的应用程序中获取的第三方库。该应用程序(AKA Utility)允许他们自动制作图纸并根据电气图纸制作更多报告。现在,他们决定将第三方应用程序更新为另一个版本,该版本以64位架构构建,因此需要更新应用程序。
我成功地将应用程序更改为64位架构并使其构建。但是,应用程序有两个部分,一个启动器和一个实用程序,启动器有一些用户选择(不同的产品),然后允许实用程序根据启动器中的选择显示不同的选项。将应用程序更新为64位体系结构后,启动程序将运行但是当运行该实用程序时,它会给我以下错误:
System.IO.FileLoadException:'完全后路径太长 合格。确保完整路径少于260个字符 目录名称少于248个字符。'
我确保装配开放的路径远小于260个字符。我甚至改变它,以便路径指向像C:/ Temp / anotherfolder / assembly这样的东西,但我仍然得到同样的问题。在x86而不是x64中运行解决方案时,这显然非常正常。
这是我的功能,当前应用程序将失败:
private void RunCfgUtilty()
{
string startupPath = @"C:/Temp/TestFolder/App.exe";
string cachePath =
Path.Combine( launcherPath,
"App" );
string configFile = Path.Combine( startupPath, "App.exe.config" );
string assembly = Path.Combine(startupPath, "App.exe" );
string[] args = new string[ ] {/* some arguements */};
AppDomainSetup setup = new AppDomainSetup( );
setup.ApplicationName = "App";
setup.CachePath = cachePath;
setup.ShadowCopyFiles = "true";
setup.ConfigurationFile = configFile;
AppDomain domain = AppDomain.CreateDomain(
"App",
AppDomain.CurrentDomain.Evidence,
setup );
domain.ExecuteAssembly( assembly, args );
}
它在domain.ExecuteAssembly(assembly,args)行失败,告诉我路径太长,无论分配的汇编变量是什么。
看到这一点,我查看了执行来自的库(System.dll)。此库(以及所有系统库)位于c:/ program files(x86)位置。我不确定这是否正确,因为我尝试使用64/86位安装程序重新安装.NET框架,并将这些文件放在同一位置。因此,我不明白我在这里做错了什么。当然,这是我第一次尝试将32位应用程序迁移到64位架构。因此,任何帮助将不胜感激,如果需要,我会尝试提供更多信息。