更新到.NET Framework 4.6后出现问题预编译视图

时间:2015-12-16 19:16:43

标签: asp.net razor razor-2 precompile pre-compilation

我们正在将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.

非常感谢任何帮助。

1 个答案:

答案 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>
理论上,

应解决您的问题。至少,它确实为我们的团队做了。

希望有所帮助!