2

我有一个引用 Entity Framework 4.1 的数据库应用程序。在项目的属性窗口中,配置平台选择选项都被禁用。我不想将此应用程序仅针对 x64 系统。

在同一解决方案中还有一些其他项目,它们只有 x86 选项可用作平台。

我不明白为什么我不能专门针对 x64 系统。我的电脑上运行的是 Windows 7 64 位。

任何线索如何专门针对基于 x64 的系统。所有项目都参考 .Net Framework 4。

仅显示“任何 CPU”选项的项目屏幕截图

在此处输入图像描述

编辑 1:为什么我需要针对 x64 系统。

实际上,我正在开发的 dll 必须在 Autocad x64 系统中加载。但是,当我尝试将 dll 加载到 Autocad 中时,它会拒绝 dll,并出现以下错误

NETLOAD Cannot load assembly. Error details: System.BadImageFormatException: 
Could not load file or assembly 
'file:///D:\RailwayProjects\RelayAnalysis_New\RelayAnalysis_Autocad\bin\Debug\Gl
obalArea.dll' or one of its dependencies. An attempt was made to load a program 
with an incorrect format.
File name: 
'file:///D:\RailwayProjects\RelayAnalysis_New\RelayAnalysis_Autocad\bin\Debug\Gl
obalArea.dll'
   at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String 
codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, 
StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean 
forIntrospection, Boolean suppressSecurityChecks)
   at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName 
assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean 
forIntrospection, Boolean suppressSecurityChecks)
   at System.Reflection.RuntimeAssembly.InternalLoadFrom(String assemblyFile, 
Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm 
hashAlgorithm, Boolean forIntrospection, Boolean suppressSecurityChecks, 
StackCrawlMark& stackMark)
   at System.Reflection.Assembly.LoadFrom(String assemblyFile)
   at Autodesk.AutoCAD.Runtime.ExtensionLoader.Load(String fileName)
   at loadmgd()
WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value 
[HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure 
logging.
To turn this feature off, remove the registry value 
[HKLM\Software\Microsoft\Fusion!EnableLog].

我强烈怀疑 Autocad x64 拒绝 dll,因为它不是 x64 格式,尽管我在这里可能错了。所以现在我将问题的范围扩大到包括 AutoCAD,因为问题的根源是在 AutoCAD 中加载 dll。我在网上搜索了一下,发现 AutoCAD 对 x32 和 x64 类型非常挑剔。用于开发 Autocad 插件的原生开发环境AutoCAD.net也可在 x32 和 x64 类型下单独使用,我认为使用 x32 开发的插件不会在 x64 类型的 Autocad 版本中运行,反之亦然。所以,我需要具体说明 Autocad 插件的目标平台

4

1 回答 1

2

在配置管理器中,有一个创建新配置的选项,我们可以在其中选择 x64 作为目标平台。

关于 AutoCAD 2012,它对平台类型非常严格。64 位 AutoCAD 2012 将接受“任何 CPU”x64目标插件,但不接受 x86。这与我们可以在 x64 系统上运行 x86 应用程序的约定有点不同。我将所有项目都定位到 x64 并在 AutoCAD 中加载它们而没有任何错误。

所以我的问题解决了。

于 2012-12-02T16:58:34.680 回答