allowDefinition='MachineToApplication'错误发布时从VS2010(但只有在一个以前建立)
-
23-09-2019 - |
题
我可以跑我的Asp.Net 视2应用程序而一个问题上我当地的计算机。只是运行调试。
但如果我已经建造了它,我不能公布它!我需要干净的解决方案,并将其发布一次。我知道这不是系统至关重要的,但是这真的很讨厌。"有一点发布"不是"干净的解决方案和后来有一点发布"
确切的错误,如下:
错误11这是一个错误使用 部分登记为 allowDefinition='MachineToApplication' 超过应用水平。这个错误 可以引起一个虚拟目录 不构成为一个应用程序 在IIS。
我怀疑它的东西来做网络。Config在美景文件夹,但后来为什么只有当我一旦建立之前。只要注意到,该应用程序的工作的现,一旦出版。
解决方案
我有同样的问题与我的软应用程序。这是令人沮丧,因为我仍然想要我的意见进行检查,因此我没有要关闭 MvcBuildViews
幸运的是,我碰到一个 后 这给我答案。保持MvcBuildViews作 真的, 然后你可以添加下面的线下项目中的文件:
<BaseIntermediateOutputPath>[SomeKnownLocationIHaveAccessTo]</BaseIntermediateOutputPath>
和让那个文件夹不在项目的文件夹。对我的作品。这不是一个完美的解决方案,但这是很好的时刻。确保你删除的 包 文件夹(位于内部的 obj\调试 和/或 obj\释放 文件夹)从项目文件夹,否则,你将继续得到这一错误。
总的来说, MS知道这个错误...
其他提示
我删除了所有的东西我的OBJ / Debug文件夹中,并将其固定的这个错误。这让我在
离开<MvcBuildViews>true</MvcBuildViews>
在我的项目文件(其中派上用场与T4MVC T4模板)选项。
编辑: 这可以通过简单地使用“构建”更容易实现 - >“重新生成解决方案”菜单(因为什么重建实际上做的是明确的OBJ / Debug文件夹,然后构建解决方案)
我用这个解决办法的 MS连接 页面对这种错误。它清除所有obj和临时文件在您的项目(所有构)在运行之前AspNetCompiler.
修改MvcBuildViews目标 项目文件使它取决于 在目标清理 包装的文件,这些工作室 创建。这些目标都包含在 网络应用程序项目 自动的。
所有包装的文件将被删除 每次MvcBuildViews 目标执行。
<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'" DependsOnTargets="CleanWebsitesPackage;CleanWebsitesPackageTempDir;CleanWebsitesTransformParametersFiles;">
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(MSBuildProjectDirectory)" />
</Target>
当有web项目输出(模板的web.config或临时发布文件)在文件夹中的obj发生此问题。所使用的编译器ASP.NET是不够聪明忽略东西在OBJ文件夹,因此它引发错误代替。
另一个解决方法是在调用
<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
</Target>
这样:
<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
<ItemGroup>
<ExtraWebConfigs Include="$(BaseIntermediateOutputPath)\**\web.config" />
<ExtraPackageTmp Include="$([System.IO.Directory]::GetDirectories("$(BaseIntermediateOutputPath)", "PackageTmp", System.IO.SearchOption.AllDirectories))" />
</ItemGroup>
<Delete Files="@(ExtraWebConfigs)" />
<RemoveDir Directories="@(ExtraPackageTmp)" />
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
</Target>
这将删除所有web.configs下\ OBJ,以及下\ OBJ所有PackageTmp文件夹。
如果您正在使用Web发布,您可以设置MvcBuildViews=false
和PrecompileBeforePublish=true
,其拷贝到临时文件夹后,预编译(即将进行之前发布/包)。
注意:PrecompileBeforePublish
仅由 “新” Web发布管道堆(VS2010 SP1 +天青SDK或VS2012 RTM)的支持。如果你正在使用VS2010 RTM,你需要使用的替代方法之一。
关于由jrummell的方案中,设置:
DependsOnTargets="CleanWebsitesPackage;CleanWebsitesPackageTempDir;CleanWebsitesTransformParametersFiles;"
它的工作在2010 VS ,但<强>不VS 2012 即可。 2012年,你必须把:
DependsOnTargets="CleanWebsitesPackage;CleanWebsitesWPPAllFilesInSingleFolder;CleanWebPublishPipelineIntermediateOutput"
来源:
VS 2010: C:\ Program Files文件(x86)的\的MSBuild \微软\ VisualStudio的\ V10.0 \网络\ Microsoft.Web.Publishing.targets
VS 2012: C:\ Program Files文件(x86)的\的MSBuild \微软\ VisualStudio的\ 11.0 \网络\ Microsoft.Web.Publishing.targets
我知道这已经回答了,但我只是想补充一些有趣的事情,我发现。
我已经设置了“MvcBuildViews”假项目,全部删除bin和OBJ文件夹和我仍然得到错误。我发现有一个“.csproj.user”文件,该文件仍然有‘MvcBuildViews’设置为true。
我删除“.csproj.user”文件,然后它的所有工作。
所以一定要确保,如果你改变你的csproj文件,你要么更改或删除“.csproj.user”文件还。
我有这个问题为好,所以我创建的项目性质的预构建事件要清洁输出目录(${projectPath}\bin,${projectPath}\obj\${ConfigurationName}
)。在另一个项目中,我也收到此错误,即使在地方的清洁活动。在第二个项目我被编译的意见作为项目文件中列出:
<MvcBuildViews>true</MvcBuildViews>
我改变了时真亦假,并使其不再抱怨这个错误,但仍然正确运行。我不会要求我知道究竟是什么造成了第二个错误,但至少它让我前进暂且。
在问题具有与中间文件做的,但有其由在builnding观点之前清理那些中间文件的另一个解决方案。
该解决方案已经被包括在一些版本的VS,但我只能说,我有问题,在VS 2013更新5.(请参阅“小心” 的下面,它可以被固定在这个版本,但不是只在我特别非标准情况下工作)。
我借soltuion从错误:allowDefinition的= 'MachineToApplication' 超出上的Visual Studio Connect应用程序级
。该溶液在于包括这些行到Web应用程序的项目(文件.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>