在发布属性上检查“发布期间预编译”后,为什么我的msbuild部署不能正常工作?

时间:2015-02-23 01:01:16

标签: asp.net-mvc razor msbuild publish

我检查了下面的中间选项"在发布期间预编译"。

enter image description here

这将FDeploy.pubxml文件更改了几行。精细。我将此单个更改提交到构建服务器。

下面是pubxml:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>FileSystem</WebPublishMethod>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <SiteUrlToLaunchAfterPublish />
    <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
    <ExcludeApp_Data>False</ExcludeApp_Data>
    <publishUrl>C:\Temp</publishUrl>
    <DeleteExistingFiles>True</DeleteExistingFiles>
    <PrecompileBeforePublish>True</PrecompileBeforePublish>
    <EnableUpdateable>False</EnableUpdateable>
    <DebugSymbols>False</DebugSymbols>
    <WDPMergeOption>DonotMerge</WDPMergeOption>
  </PropertyGroup>
</Project>

启用了mvcbuildviews的远程构建。远程部署失败,出现以下错误:

Error   82  The name 'ViewBag' does not exist in the current context
Error   5   The name 'model' does not exist in the current context  

等等。这样有超过100个错误。请记住,正常的msbuildviews启用msbuild步骤可以正常使用相同的代码。

我在web项目csproj上使用msbuild:

/p:DeployOnBuild=true /p:PublishProfile=FDeploy /p:VisualStudioVersion=12.0 /p:Configuration=Release

任何线索?哦,是的,检查框也导致我的开发机器上出现相同的错误,我必须完全删除bin,obj和appdata文件夹以中和它。但是,在构建服务器上执行新的检出没有帮助。

另请注意,当我回到旧的部署配置文件时,需要重新检查以修复部署。

1 个答案:

答案 0 :(得分:1)

我不得不作弊来解决这个问题:我将MvcBuildViews的使用仅限于&#39; Debug&#39;该项目的版本:

在csproj文件中:

 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<MvcBuildViews>true</MvcBuildViews>
</PropertyGroup>

在部署时,我使用mvcbuildviews遇到了其他无法解释的错误。似乎最好完全避免使用它。无论如何,构建仍然保持清洁,因为我也编译和测试调试版本。