2012-01-17 71 views
0

是否可以指定(或覆蓋)爲BizTalk項目部署ApplicationName,數據庫服務器和數據庫名稱?如果是這樣,怎麼樣?MSBuild和BizTalk

不幸的是,這些數據存儲在btproj.user文件中而不是.btproj文件中,而我的客戶端不想將btproj.user文件檢入源代碼管理系統。

(僅供參考 - 我們正在使用BizTalk CodePlex從構建發生器)

回答

2

我剛剛審查了CodePlex上源。當我正確理解所有內容時,他們正在生成

%AppName%.Custom.targets 
%AppName%.Custom.properties 

文件。屬性中的文件的一些屬性列出了BTS數據庫連接

<BizTalkDatabaseServerName>.</BizTalkDatabaseServerName> 
<BizTalkManagementDatabaseName>BizTalkMgmtDB</BizTalkManagementDatabaseName> 
<BizTalkManagementDatabaseConnectionString> 
server=$(BizTalkDatabaseServerName); 
database=$(BizTalkManagementDatabaseName); 
integrated security=sspi; 
</BizTalkManagementDatabaseConnectionString> 
<PipelineComponentsFolderPath>C:\Program Files\Microsoft BizTalk Server 2010\Pipeline Components</PipelineComponentsFolderPath> 

您可以輕鬆地通過使用命令行或通過在VS添加額外的MSBuild參數或使用屬性TeamBuild切換

msbuild.exe MyBizTalkProject.proj /p:BizTalkDatabaseServerName=SqlCluster 
覆蓋這些屬性值

該項目的開發商應該重寫默認MSBuild.Custom.properties文件看起來像這樣

<BizTalkDatabaseServerName Condition="'$(BizTalkDatabaseServerName)'==''">.</BizTalkDatabaseServerName> 

通過使用這樣的探索「。」標識符(僅適用於本地SQL Server)僅在未給出參數值時使用。因爲在目前的實施中,物業的定義可以!覆蓋你從命令行傳遞的值。所以要注意這一點。