4

我目前正在運行一個CI構建和部署使用TFS 2013的構建和發佈管理2013年,雖然我需要我正在部署的Web應用程序(WebForms)進行預編譯。我希望在輸出複製到放置位置之前使用發佈配置文件來驅動預編譯,但是我還沒有發現任何能夠完成此操作的內容。如何獲取TFS構建以使用保存的發佈配置文件預編譯Web應用程序?

找到How do I configure MSBuild to use a saved publishProfile for WebDeploy?後,我成立了我的web應用程序發佈配置文件,如果我使用msbuild.exe使用開發人員命令提示符下VS2013

msbuild.exe WebSite.csproj /p:DeployOnBuild=true /p:PublishProfile=TfsPrecompile 

發佈名爲TfsPrecompile檔案,將預編譯的Web應用程序,具有從https://stackoverflow.com/a/13267694/595473

<?xml version="1.0" encoding="utf-8"?> 
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> 
     <WebPublishMethod>FileSystem</WebPublishMethod> 
     <LastUsedBuildConfiguration>Debug</LastUsedBuildConfiguration> 
     <LastUsedPlatform>Any CPU</LastUsedPlatform> 
     <SiteUrlToLaunchAfterPublish /> 
     <ExcludeApp_Data>False</ExcludeApp_Data> 
     <PublishUrl>$(MSBuildProjectDirectory)\PublishDirectory</PublishUrl> 
     <DeleteExistingFiles>True</DeleteExistingFiles> 
     <PrecompileBeforePublish>True</PrecompileBeforePublish> 
     <EnableUpdateable>False</EnableUpdateable> 
     <DebugSymbols>False</DebugSymbols> 
     <WDPMergeOption>DonotMerge</WDPMergeOption> 
    </PropertyGroup> 
</Project> 

運行的MSBuild當地一些幫助,我結束了預編譯的網站在新PublishDirectory文件夾,一切似乎進展順利。

要連接TFS和發佈管理,我使用ReleaseTfvcTemplate.12.xaml模板。

構建>項目:$/Insert_Directory_Here/WebSite.csproj

高級>的MSBuild參數:/p:DeployOnBuild=true /p:PublishProfile=TfsPrecompile

當我用的MSBuild參數運行的構建中有九或-所以分鐘構建無顯著時間差相比,沒有預編譯參數的構建。當我在本地運行MSBuild時,我看到了ASPNETCOMPILER的引用,雖然我在任何TFS診斷日誌中都沒有看到對ASPNETCOMPILER或aspnet_compiler的引用。

+0

如果在「詳細」或「診斷」下運行構建日誌詳細信息的構建,是否會看到與ASP .NET編譯器相關的任何警告?這聽起來很熟悉。 – 2014-11-22 19:11:43

+0

您是否正在設置VisualStudioVersion屬性?有關更多詳細信息,請參見http://sedodream.com/PermaLink,guid,a5894bad-f2a1-441a-a5b2-74f16c6cf8aa.aspx。 – 2014-11-23 04:35:23

+0

@DanielMann @SayedIbrahimHashimi我現在在Build> Advanced> MSBuild arugments中使用'/ flp:verbosity = diagnostic /p:VisualStudioVersion=12.0/p:DeployOnBuild = true/p:PublishProfile = TfsPrecompile',儘管我還沒有看到構建服務器上的文件或放置位置的任何差異。日誌文件大小與以前相同,似乎所有版本現在都在2013年登錄診斷級別。在WebSite.log文件中,我看到DeployOnBuild = true和PublishProfile = TfsPrecompile在1> Project「C :\ Builds \ 1 \ DIRECTORY \ WebSite.csproj「節點1(默認目標)。 – CosworthTC 2014-11-23 16:16:56

回答

4

事實證明,構建框沒有完成發佈所需的所有目標,因此它只是忽略它。

回答https://social.msdn.microsoft.com/Forums/vstudio/en-US/c2d10c74-ed44-4635-acb9-ab08612701e2/deployonbuild-not-working?forum=tfsbuild

終於來了!我有解決方案。無論是從Team Build進行部署,還是直接使用MSBuild,都需要將MSBuild目標複製到構建機器上,以便發佈成功。

我們不會將Visual Studio安裝到我們的構建機器上(浪費許可證) - 但是我們會安裝Visual Studio Shell。看起來shell安裝了一些MSBuild目標 - 但不是全部 - 並且肯定不是發佈。

因此與VS一臺機器上安裝到C:\ Program Files文件(x86)的\的MSBuild \微軟

拷貝整個文件夾到您的構建機器,更換同一個文件夾那裏。也許備份原來的第一個。你也可以找出你實際需要的目標......

這爲我修好了!

+1

可能想要仔細檢查,因爲我不認爲在構建服務器上部署VS需要許可證 - 如果您僅使用它來促進構建。 – 2015-06-05 18:26:57

-1

我相信版本模板中有一個錯誤會影響網站的預編譯方式。看起來使用默認模板,而是手動添加RM位。

http://blogs.msdn.com/b/visualstudioalm/archive/2013/12/09/how-to-modify-the-build-process-template-to-use-the-option-trigger-release-from-build.aspx

首先切換到默認模板,並驗證它確實是你想要的。然後按照上面的路線。

+1

發佈模板** build **很好。發佈模板中有一個錯誤,它不會在* _PublishedWebsites *文件夾中交換標記化配置文件,但就是這樣。這純粹是發佈方面的問題。發佈默認模板與默認模板基本相同,只是它添加了兩個與釋放問題完全相關的邏輯部分。 Build並沒有被觸及。 – 2014-11-22 19:00:27

+0

那麼你的心就會被打破?如果它不交換釋放模板中的標記化配置,那麼它不像默認模式那樣工作! – 2014-11-23 09:12:04

相關問題