将.NET应用程序从32位迁移到64位架构

时间:2017-07-18 01:41:55

标签: c# .net

我有一个.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位架构。因此,任何帮助将不胜感激,如果需要,我会尝试提供更多信息。

0 个答案:

没有答案