Подтвердить что ты не робот

Запустить преобразование web.config из командной строки

Добрый день!

Я хочу иметь возможность создавать проект ASP.NET MVC 2, используя диалог публикации VS2010 и из командной строки.

Для командной строки я получаю следующее:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe .\SolutionFolder\MyProject.csproj /p:Configuration=Release;DeployOnBuild=True;PackageAsSingleFile=False;outdir=c:\_OutputFolder\

Единственная проблема с тем, что преобразование Web.config не применяется (но добавлено в пакет WebDeploy). Я не использую WebDeploy. Есть ли способ применить преобразования Web.config?

Спасибо!

4b9b3361

Ответ 1

Вы также можете попробовать использовать инструмент преобразования XDT:

http://ctt.codeplex.com

Я использую это вместо того, чтобы возиться с неясными целями msbuild.

Ответ 2

Вот еще один подход, который использует msbuild для преобразования файла Web.config:

http://sedodream.com/2010/04/26/ConfigTransformationsOutsideOfWebAppBuilds.aspx

В моих тестах результаты были лучше. В принципе, вы создаете файл проекта для выполнения только задачи TransformXML:

<Project ToolsVersion="4.0" DefaultTargets="Demo" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<UsingTask TaskName="TransformXml"
         AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll"/>

<Target Name="Demo">
    <TransformXml Source="app.config"
                  Transform="Transform.xml"
                  Destination="app.prod.config"/>
</Target>

Ответ 3

Я думаю, стоит упомянуть, что вы также можете использовать PowerShell DLL, используемую Visual Studio: Microsoft.Web.XmlTransform.dll

PowerShell script, см.: Web.Config преобразуется за пределы Microsoft MSBuild?

Чтобы загрузить DLL вместо копирования, мне это нравится (так что вы видите, где найти эту DLL, по крайней мере, в моем сценарии на работе нам приходилось искать эти местоположения):

if (Test-Path "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.XmlTransform.dll") {
    Add-Type -LiteralPath "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.XmlTransform.dll"
} elseif (Test-Path "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.XmlTransform.dll") {
    Add-Type -LiteralPath "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.XmlTransform.dll"
} else {
    throw [System.IO.FileNotFoundException] "Microsoft.Web.XmlTransform.dll not found."
}