1

我们正在将 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)\MSBuild\14.0\bin\msbuild.exe .\Estream.sln /m /nologo /p:Configuration=Debug;Platform=Mixed Platforms /property:MvcBuildViews=true /t:build /v :米

有没有其他人看到过类似的问题?为了预编译视图,我需要使用 .NET Framework 4.6 做些什么不同的事情?

我知道这里提到的 ICompileModule 和 RazorPreCompileModule ,但我们没有使用 MVC 6。

任何帮助将不胜感激。

4

1 回答 1

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>

理论上应该可以解决您的问题。至少,它对我们的团队有用。

希望有帮助!

于 2015-12-18T15:06:42.600 回答