Masalahnya berkaitan dengan file perantara, tetapi ada solusi lain yang terdiri dari membersihkan file perantara tersebut sebelum membangun view.
Solusi ini telah disertakan dalam beberapa versi VS, tetapi saya hanya dapat mengatakan bahwa saya memiliki masalah di Pembaruan VS 2013 5. (Lihat "Hati-hati" di bawah, ini bisa diperbaiki dalam versi ini, tetapi tidak hanya berfungsi di versi saya kasus non-standar).
Saya meminjam solusi dari Error: allowDefinition = 'MachineToApplication' melampaui level aplikasi di Visual Studio Connect.
Solusinya terdiri dari memasukkan baris-baris berikut ke proyek aplikasi web ( .csprojfile) yang menangani penghapusan file perantara yang offedning:
<!--Deal with http://connect.microsoft.com/VisualStudio/feedback/details/779737/error-allowdefinition-machinetoapplication-beyond-application-level,
we will need to clean up our temp folder before MVC project starts the pre-compile-->
<PropertyGroup>
<_EnableCleanOnBuildForMvcViews Condition=" '$(_EnableCleanOnBuildForMvcViews)'=='' ">true</_EnableCleanOnBuildForMvcViews>
</PropertyGroup>
<Target Name="CleanupForBuildMvcViews" Condition=" '$(_EnableCleanOnBuildForMvcViews)'=='true' and '$(MVCBuildViews)'=='true' " BeforeTargets="MvcBuildViews">
<ItemGroup>
<_PublishTempFolderNamesToCleanup Include="Database;TransformWebConfig;CSAutoParameterize;InsertAdditionalCS;ProfileTransformWebConfig;Package;AspnetCompileMerge" />
</ItemGroup>
<!--Force msbuild to expand all the wildcard characters so to get real file paths-->
<CreateItem Include="@(_PublishTempFolderNamesToCleanup->'$(BaseIntermediateOutputPath)**\%(identity)\**\*')">
<Output TaskParameter="Include" ItemName="_EvaluatedPublishTempFolderNamesToCleanup" />
</CreateItem>
<Delete Files="@(_EvaluatedPublishTempFolderNamesToCleanup)" />
</Target>
Hati-hati: untuk beberapa alasan, mungkin karena saya memasukkannya sendiri ke dalam proyek, target pembangunan saya untuk membangun tampilan dinamai "BuildViews", bukan "MvcBuildViews", jadi saya harus memodifikasi BeforeTargetsatribut yang sesuai. Saya juga menyederhanakan target, dengan menghapus PropertyGroupdan menyederhanakan kondisinya, seperti ini:
<Target Name="CleanupForBuildMvcViews" Condition="'$(MVCBuildViews)'=='true' " BeforeTargets="BuildViews">
<ItemGroup>
<_PublishTempFolderNamesToCleanup Include="Database;TransformWebConfig;CSAutoParameterize;InsertAdditionalCS;ProfileTransformWebConfig;Package;AspnetCompileMerge" />
</ItemGroup>
<!--Force msbuild to expand all the wildcard characters so to get real file paths-->
<CreateItem Include="@(_PublishTempFolderNamesToCleanup->'$(BaseIntermediateOutputPath)**\%(identity)\**\*')">
<Output TaskParameter="Include" ItemName="_EvaluatedPublishTempFolderNamesToCleanup" />
</CreateItem>
<Delete Files="@(_EvaluatedPublishTempFolderNamesToCleanup)" />
</Target>