7

私のチームはパブリッシュ プロファイルが大好きです。私たちが取り組んでいる多くのテスト環境があり、Web.config 変換を使用して、各環境のマシンの名前、構成設定などを置き換えることができるため、ビルド/展開/テスト プロセスがはるかに簡単になります。

例えば:

Web.config
    Web.dev.config
    Web.int.config
    Web.prod.config

ただし、コンソール アプリケーションとして実装された、Web サービスをヒットするために使用する多数のテスト アプリケーションがあります。これらの構成ファイルに対して同じタイプの変換を実行できるようにしたいと考えています。これにより、ビルド ドロップを取得する際の構成ファイルの手動編集に関連するテストの手作業を減らすことができます。

基本的に、これが必要です:

App.config
    App.dev.config
    App.int.config
    App.prod.config

これらの構成変換についての私の理解では、それらは Web プロジェクトの対応する発行プロファイルに関連しているということです。

Properties
    PublishProfiles
        dev.pubxml
        int.pubxml
        prod.pubxml

同様のファイルをコンソール アプリ プロジェクトに追加しようとしましたが、実際にそれらを利用するのは、Web パブリッシング MSBuild ターゲットにあると思われます。

非 Web 構成を変換できるように、ビルドのこの部分に具体的にフックする方法はありますか?

4

5 に答える 5

3

サーバー上のVisual StudioおよびMSBuildで動作する、ビルド中にApp.configを変換するAzure WebJobsプロジェクトの簡単なソリューションを探していました。

Azure WebJobs プロジェクトの場合、次の追加が.csproj役立ちました。

<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.Tasks.dll" />
<Target Name="AfterCompile" Condition="Exists('App.$(configuration).config')">
    <Message Text="Transforming config files..." Importance="high" />
    <TransformXml Source="App.config" Transform="App.$(Configuration).config" Destination="$(IntermediateOutputPath)$(TargetFileName).config" />
    <PropertyGroup>
      <AppConfig>$(IntermediateOutputPath)$(TargetFileName).config</AppConfig>
    </PropertyGroup>
    <ItemGroup>
        <AppConfigWithTargetPath Remove="App.config" />
        <AppConfigWithTargetPath Include="$(AppConfig)" Condition="'$(AppConfig)'!=''">
            <TargetPath>$(TargetFileName).config</TargetPath>
        </AppConfigWithTargetPath>
    </ItemGroup>
</Target>

ビルドで動作し、拡張機能は不要で、App.config は上書きされません。Dhia Louhichiの回答に基づいています。

于 2017-06-26T02:29:09.190 に答える