
[英]Why does 'Any CPU (prefer 32-bit)' allow me to allocate more memory than x86 under .NET 4.5?
[英]Why does App_GlobalResources compile for x86, even with “Enable 32-bit applications” set to false in IIS?
我正在处理的Web应用程序具有三个x86依赖项:
我在登台服务器和本地计算机上执行了以下操作:
Web应用程序现在具有64位依赖性(Lync UCMA SDK),这导致需要删除32位依赖性。 问题是,现在我从浏览器的IIS或命令行(如果尝试手动使用aspnet_compile
收到以下消息:
无法加载文件或程序集'file:/// C:\\ Windows \\ Microsoft.NET \\ Framework64 \\ v4.0.30319 \\ Temporary ASP.NET Files \\ root \\ 6b69372f \\ fdfe0d46 \\ App_GlobalResources.melxzfvs.dll'或其依赖项之一。 试图加载格式错误的程序。
为了解决该问题,我尝试了以下操作:
aspnet_regiis -i
(64位版本) 在Teleele JustDecompile之类的工具中查看App_GlobalResources dll表示该dll是专门为x86平台编译的,即使显然正在运行64位版本的aspnet_compile
。 bin文件夹中的所有其他程序集均为“任何CPU”。
我该怎么做才能针对x64进行编译?
编辑:如果我删除App_GlobalResources文件夹,则ASP.NET编译器将继续抱怨,除非现在它与App_Code.dll有关。 同样的问题。
在对.csproj和Web.config文件进行一些乏味的并行比较之后,我确定web.config中的以下部分是罪魁祸首:
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" compilerOptions="/unsafe /platform:x86" warningLevel="1">
<providerOption name="CompilerVersion" value="v4.0" />
<providerOption name="WarnAsError" value="false" />
</compiler>
</compilers>
</system.codedom>
删除此部分后,将为“任何CPU”编译App_Code,App_GlobalResources及其同类。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.