Проблема связана с промежуточными файлами, но есть еще одно решение, состоящее в очистке этих промежуточных файлов перед созданием представлений.
Это решение было включено в некоторую версию VS, но я могу только сказать, что у меня была проблема в обновлении VOS 2013 г. 5. (Смотрите «Осторожно» ниже, его можно было бы исправить в этой версии, но не работает только в моем конкретном нестандартном случае).
я позаимствовал soltuion из Error: allowDefinition='MachineToApplication' beyond application level on Visual Studio Connect.
Раствор, состоит в том числе и эти строки проекта веб-приложений (.csproj
файл), который обрабатывать удаление из 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>
Берегись: по какой-то причине, возможно, потому, что я включил его сам в проект, моя цель сборки для создания представлений была названа "BuildViews"
, а не "MvcBuildViews"
, поэтому мне пришлось изменить BeforeTargets
соответственно. Я также упростил цель, путем удаления PropertyGroup
и упрощения условий, например:
<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>
Если есть дополнительный web.config в каталоге ребенка, попробуйте удалить его. – user1154664