2011-01-31 2 views
24

Добрый день!Запуск преобразования 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?

Спасибо!

+0

Возможный дубликат [MSBuild сценария и VS2010 публиковать применять Web.config Transform] (http://stackoverflow.com/questions/2905151/msbuild- script-and-vs2010-publish-apply-web-config-transform) –

ответ

22

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

http://ctt.codeplex.com

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

+0

Кажется, это лучшее решение. – artvolk

+0

Все ссылки на документацию мертвы на этой странице сейчас. – Luke

9

Вот еще один подход, который использует 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> 

+0

Это очень простой способ сделать это. Замените 'v10.0' на' v15.0' для Visual Studio 2017, чтобы он мог найти dll. – Luke

4

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

PowerShell скрипт, см: Web.Config transforms outside of 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." 
} 
Смежные вопросы