我们正在将ASP.Net(MVC 5)项目从.Net Framework 4.5.2升级到.Net Framework 4.6。我们还没有更新到MVC 6。
我们已将MvcBuildViews项目属性设置为true。这在过去运行良好,但在将项目的目标框架更改为".NET Framework 4.6"后,我们在构建时会出现以下错误:
错误MSB6004:指定的任务可执行文件位置"C:\windows\Microsoft.NET\Framework64\aspnet_compiler.exe"无效。
使用以下命令行直接调用MSBuild.exe时也会发生这种情况:
C: \Program Files(x86)\MBuild\14.0\bin\MSBuild.exe.\Estream.sln/m/nologo/p:Configuration=调试;平台=混合平台/属性:MvcBuildViews=true/t:build/v:m
其他人见过类似的问题吗?使用.NET Framework 4.6预编译视图需要做哪些不同的操作?
我知道这里提到的ICompileModule和RazorPreCompileModule,但我们没有使用MVC 6。
如有任何帮助,我们将不胜感激。
很可能您没有设置TargetFramework。你的第一个危险信号将是路径。注意:
C: \windows\Microsoft.NET\Framework64\aspnet_compiler.exe
如果你查看你的项目文件(.proj),你会发现该路径是如何生成的;看起来像这样:
$(windir)\Microsoft.NET\Framework64\$(TargetFrameworkVersionNumber)
奇怪。。。我们似乎缺少TargetFrameworkVersionNumber
变量?去哪儿了?
现在,如果您查看TargetFrameworkVersionNumber
变量是如何设置的,您会注意到您可能缺少一个目标框架:
在Visual Studio 2015中,您的目标框架很可能是4.6.1。因此,只需添加代码:
<PropertyGroup Condition=" '$(TargetFrameworkVersion)' == 'v4.6.1' ">
<TargetFrameworkVersionNumber>v4.0.30319</TargetFrameworkVersionNumber>
</PropertyGroup>
理论上应该能解决你的问题。至少,对我们的团队来说是这样。
希望能有所帮助!