andyyuduo 发表于 2015-5-19 08:52:14

64位win7+vs2010编译.net3.5以前的版本问题

  一般编译会出现
1.“ResGen.exe”已退出,代码为2 问题处理
   2.“错误 2 “LC.exe”已退出,代码为 -1。 NBGIS.MainGIS”
  3.“未能加载文件或程序集“ESRI.ArcGIS.Carto, Version=10.0.0.0, Culture=neutral, PublicKeyToken=8fc3cc631“
  对于.net3.5平台 其中第一个问题因为64为编译过程中会调用resGen.exe,从而导致编译错误,解决方法用两种:
  1. 关闭Visual Studio。
  2. 在Visual Studio Tools目录,以管理员身份运行Visual Studio Command Prompt (2010),
  [注:这个在开始--所有程序--microsoft visual studio 2010 下面]
  切换目录到":\Program Files (x86)\Microsoft SDKs\Windows\v\bin\”. ( 我的是v7.0A )
  [注:用cd命令切换目录]
  3. 执行命令:
corflags /32bit+ ResGen.exe /force
  4. 在记事本中打开 .csproj 文件
  5. 添加Managed32Bit这个属性在PropertyGroup下面: 然后保存文件。
  再次尝试编译,一切OK!
  或者在记事本中打开.csproj文件,添加如下代码:





true



$(IntermediateOutputPath)ResGenForced32Bit\







$(SDK40ToolsPath)
Managed32Bit
$(TargetFrameworkSDKToolsDirectory)
$(ResGenSdkToolsPath)




$(CacheTargetFrameworkSDKToolsDirectory)




  重新加载即可。
  而对于更早的像.net2.0平台的东西,则应该继续

1、解决方案资源管理器窗口中,右键项目==》属性
2、在弹出的属性页面中,选择“生成”选项卡
3、修改“生成”选项卡里面的“目标平台”为:"X86"
4、重新编译程序Ok

  如果应用的三方控件,还有可能出现第三种错误,解决方案如下:
  1、把项目文件夹下Properties文件夹下的licenses.licx文件删除,重新编译即可;
  2、文本方式打开*.csproj文件,在文件中查找licenses.licx字样,删除对应节点。
  注意:还有一种情况就是Properties文件夹下已经没有licenses.licx文件了,程序还是报这个错,这个时候你只需要重命名一个空的txt文件为licenses.licx再放入Properties文件夹,问题也可解决。
  至此,一般的项目迁移既可以完成。
  如果是在做AE9.2的项目迁移10.0,可能

找不到ESRI.ArcGIS.Utility;的引用解决方方案如下 :
  在ArcGIS10环境中找不到ESRI.ArcGIS.Utility、ESRI.ArcGIS.Utility.BaseClasses等引用,ArcGIS9.2之后Utility会逐渐被丢弃的,转而用ADF来代替,把ESRI.ArcGIS.Utility和ESRI.ArcGIS.Utility.BaseClasses改为ESRI.ArcGIS.ADF、ESRI.ArcGIS.ADF.BaseClasses问题解决。
  注意:因为BaseClasses存在存在ESRI.ArcGIS.ADF和ESRI.ArcGIS.ADF.local中,因为将ESRI.ArcGIS.ADF.local引用因该删除。
  



  
页: [1]
查看完整版本: 64位win7+vs2010编译.net3.5以前的版本问题