これには、Configuration TransformというVSエクステンションがあります。 これをインストールせずにこのを実現するには、デモソリューションに示されている例に従って、異なるビルド設定ファイルを追加し、プロジェクトファイルに新しいMSBuildタスクを追加します。デモソリューションのThe download linkは、拡張機能のVisual Studio Gallery Webページにあります。このアプローチでは、MSBuildはXSLTを使用してXMLの変換を実行するため、余分なパッケージは必要ありません。
次は、デモソリューションからプロジェクトファイルに追加されたMSBuildタスクです。私はVS2015 ASP.NET MVCプロジェクトのためにそれに続いたときに、私の場合、私は中<UsingTask TaskName="TransformXml" AssemblyFile=...
を入れて持っていなかった
<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Web\Microsoft.Web.Publishing.Tasks.dll" />
<Target Name="AfterCompile" Condition="Exists('App.$(Configuration).config')">
<!--Generate transformed app config in the intermediate directory-->
<TransformXml Source="App.config" Destination="$(IntermediateOutputPath)$(TargetFileName).config" Transform="App.$(Configuration).config" />
<!--Force build process to use the transformed configuration file from now on.-->
<ItemGroup>
<AppConfigWithTargetPath Remove="App.config" />
<AppConfigWithTargetPath Include="$(IntermediateOutputPath)$(TargetFileName).config">
<TargetPath>$(TargetFileName).config</TargetPath>
</AppConfigWithTargetPath>
</ItemGroup>
</Target>
<!--Override After Publish to support ClickOnce AfterPublish. Target replaces the untransformed config file copied to the deployment directory with the transformed one.-->
<Target Name="AfterPublish">
<PropertyGroup>
<DeployedConfig>$(_DeploymentApplicationDir)$(TargetName)$(TargetExt).config$(_DeploymentFileMappingExtension)</DeployedConfig>
</PropertyGroup>
<!--Publish copies the untransformed App.config to deployment directory so overwrite it-->
<Copy Condition="Exists('$(DeployedConfig)')" SourceFiles="$(IntermediateOutputPath)$(TargetFileName).config" DestinationFiles="$(DeployedConfig)" />
</Target>
ここで私は私の.csprojファイルに適用される方法は、非常に簡単です:。
<Target Name="AfterBuild" Condition="Exists('Web.$(Configuration).config')">
<Exec Command="attrib -R Web.config" />
<TransformXml Source="Web.config" Transform="Web.$(Configuration).config" Destination="Web.config" StackTrace="true" />
</Target>
また、これにはpostがあります。 Publish.pubxml(ProjectFolder /Properties/PublishProfiles/Publish.pubxml)ファイルシステムが公開行うには、このようにウェブ - web.configファイルの変換のためのさらなる
、Since VS2012我々はパブリッシュプロファイルを追加することができます。設定の変換はデフォルトで行われます。以下は、私がしようとサンプル
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<WebPublishMethod>FileSystem</WebPublishMethod>
<SiteUrlToLaunchAfterPublish />
<publishUrl Condition="$(OutDir) != ''">$(OutDir)\_PublishedWebsites\$(ProjectName)</publishUrl> <!-- For MSBuild -->
<publishUrl Condition="$(OutDir) == ''">$(MSBuildThisFileDirectory)..\..\_PublishedWebsite\</publishUrl> <!-- For Visual Studio...cant use $(ProjectName) -->
<DeleteExistingFiles>True</DeleteExistingFiles>
</PropertyGroup>
</Project>
ですが、それは、私はこのエラーを得た表現のVisual Studio Web開発者では動作しませんようだ:「この拡張機能はありません任意の現在インストールされた製品はインストールできません」。 – Allende
Webプロジェクトの場合、SlowCheetahでもファイルはpackage/publish上でのみ変換されます。 –
拡張機能はWeb Developer Expressではサポートされていません。拡張機能には有料版のVisual Studioが必要です。 –