asp.net - MvcBuildViews 不适用于 x64 项目
问题描述
在 VS2017 ASP.NET MVC 项目中,我注意到即使我已设置MvcBuildViews
为true
. 该项目现在在 MVC 5 上,但已从一些早期版本升级。它也开始设置为 AnyCPU,但现在设置为 x64(有时我们需要在内存中存储大量数据,而且我们总是部署到 x64,所以......)。
我已经检查了.csproj
包含在各个地方提到的构建目标,包括 SO 答案中的几个。我尝试了一些变体,但没有一个奏效。
这是我开始调查时出现但.csproj
在我开始调查时注释掉的那个:
<Target Name="BuildViews" Condition="'$(MvcBuildViews)'=='true'" AfterTargets="Build">
<Message Importance="normal" Text="Precompiling views" />
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
</Target>
如果我取消注释它,我会收到一个构建错误(我已经从瑞典手动翻译它):
未能读取文件或程序集 MyProjectName 或其依赖项之一。试图读取格式无效的程序。
文件:C:\...MyProjectPath...\ASPNETCOMPILER
这里建议指定 x64 ASP.NET 编译器:在<MvcBuildViews>
标签下方添加:
<AspNetToolPath Condition="'$(Platform)' == 'x64'">$(windir)\Microsoft.NET\Framework64\v4.0.30319</AspNetToolPath>
并将属性添加ToolPath="$(AspNetToolPath)"
到目标的<AspNetCompiler.../>
标签。
这样做会导致另一个错误(我再次从瑞典语翻译):
无法读取文件或程序集 System.Runtime.InteropServices.RuntimeInformation,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a 或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)
文件:C:\temp\global.asax
我们使用 Stripe 卡支付 NuGet 包将相关程序集拉入项目,该包是在项目从 AnyCPU 更改为 x64 后添加的。该System.Runtime.InteropServices.RuntimeInformation
软件包安装在版本 4.3.0 中。包含此web.config
绑定重定向(为什么版本号不匹配 4.3.0?):
<dependentAssembly>
<assemblyIdentity name="System.Runtime.InteropServices.RuntimeInformation" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0"/>
</dependentAssembly>
在这一点上,我没有想法,下一步该尝试什么。任何人都可以帮忙吗?
解决方案
尝试将该 dll 注册到 GAC 中:
试试这些:
1)在工具--> Nuget 包管理器-->包管理器控制台update-package -reinstall
下运行
2)以管理员身份打开VS的开发人员命令提示符,然后键入:
cd C:\Users\xxx\.nuget\packages\system.runtime.interopservices.runtimeinformation\4.3.0\lib\net45
gacutil /i System.Runtime.InteropServices.RuntimeInformation.dll
此外,您可以下载system.runtime.interopservices.runtimeinformation
nuget 软件包版本4.0.0
。
之后,将该 dll 注册到C:\Users\xxx\.nuget\packages\system.runtime.interopservices.runtimeinformation\4.0.0\lib\net45
.
此外,还有一个类似的问题。
推荐阅读
- android - Android 翻译动画不在前面
- rdbms - 将关系修改为 BCNF
- bash - 在 bash 脚本中的 exec 之后不会运行任何代码
- python - BookingConfirmation() 缺少 1 个必需的仅关键字参数:“金额”
- python - 通过 UUID Django 过滤时的验证错误
- javascript - 与JS不一致?
- javascript - jQuery / Javascript - 获取所有加载的图像
- python - 复合赋值和计数变量的问题
- node.js - 如何链接快速路由,以便 / 是子目录的主目录
- python-3.x - 已解决:尝试将线程与 GTK 和 Pycairo 一起使用时出现错误(绘制窗口并从另一个线程发出信号)