2016-12-09 6 views
0

私はビルドしているプロジェクト(非常に単純なクラスライブラリ)を持っています。このライブラリは、特定の接続文字列に依存する外部リソースに対していくつかの呼び出しを行います。この接続文字列をapp.configファイルに配置しました。TeamCityはapp.configなしのクラスライブラリを構築しません

しかし、キーのセキュリティの理由から、このapp.configファイルをソース管理に配置しないため、ファイルは「無視されました」。

残念なことに、TeamCityがライブラリの構築を試みると、Could not copy the file "App.config" because it was not found.というプロジェクトに不満があります。私の開発環境から単なる単体テストをビルドして実行します。

私は基本的な考え方が正しいことを確信しています(文字列をファイルに入れてソース管理に入れない)が、どうすればこの設定が必要か分からないと思います。

私はこのライブラリをTeamCityでビルドするためのいくつかのオプションはありますか?ここで

+0

クラスライブラリを使わずに、クラスライブラリを使ってアプリケーションの設定ファイルにキーを入れてはいけませんか? – Mahdi

+0

私は分かりません。おそらく。私は議論を見ることができますが、この依存関係を消費するアプリケーションにどのように表現するかはわかりません。そして、これは単体テスト(よく、機能テスト)が関係しているのと同じ難しさで私を残していませんか?テストで設定ファイルを格納する責任があり、ファイルをソース管理に保存しない場合、同じボートに戻っていないのですか?本当に本当のアプリケーションのために同じ質問があります.... – reidLinden

+0

多分それはクラスライブラリではありません。私にとっては、外部リソースへの特別なアクセスを持つことができるAPIエンドポイントに似ていますが、呼び出し元はそのアクセス権を持たず、呼び出すだけで結果を戻すことができます。 – Mahdi

答えて

0

は、実行可能なソリューションです:

は、チーム市 の新しいPowerShellのビルドステップを作成してビルドステップに次のPowerShellのコードをコピーして、MSBuildのステップの前に実行するための新しいビルドステップを設定します。

## first, set the directory to the place where the file lives 
Set-Location %teamcity.build.checkoutDir%\RecordingProvider\RecordingProvider 

## copy the existing template file into a real app.config file 
Copy-Item App.template.config -destination App.config 

If (Test-Path App.config){ 
    ##File exists 
    Write-Output "App.config exists" 
    exit 0 
}Else{ 
    ## File does not exist 
    Write-Error "App.config does not exist!!" 
    exit -1 
} 

これと同様に、TeamCityはビルドをコンパイルするようになりました。

他にもいくつかの解決策があると思いますが、これが表示されるまで私にはわかります。

関連する問題