我们正在将ASP.Net(MVC 5)项目从.NET Framework 4.5.2升级到.NET Framework 4.6。我们还没有更新到MVC 6。
我们将MvcBuildViews项目属性设置为true。这在过去运行良好,但在将项目的目标框架更改为" .NET Framework 4.6后,#34;我们在构建时遇到以下错误:
错误MSB6004:指定的任务可执行位置 " C:\ Windows \ Microsoft.NET \ Framework64 \ aspnet_compiler.exe"无效。
使用以下命令行直接调用MSBuild.exe时也会发生这种情况:
C:\ Program Files(x86)\ MSBuild \ 14.0 \ bin \ msbuild.exe。\ Estream.sln / m / nologo / p:Configuration = Debug; Platform =混合平台 / property:MvcBuildViews = true / t:build / v:m
还有其他人看到过类似的问题吗?使用.NET Framework 4.6以预编译视图需要做些什么?
我知道ICompileModule和RazorPreCompileModule as mentioned here,但我们没有使用MVC 6.
非常感谢任何帮助。
答案 0 :(得分:1)
您很可能没有设置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>
理论上,应解决您的问题。至少,它确实为我们的团队做了。
希望有所帮助!