Как использовать MSBuild с командной строкой?

у меня есть сайт (а не web application, Это website) и я хочу опубликовать его у command prompt.

Я хочу опубликовать его в том же каталоге (каждую ночь), и я не хочу использовать инструменты автоматизации сборки, такие как TeamCity, TFS или сторонние инструменты, такие как Nant.

Это должно быть сделано с MSBuild.

как я могу это сделать?

обновление : в окне публикации единственный вариант, который следует проверить is Use Fixed naming and single page assemblies

3 ответов


из вашего комментария Ваш веб-проект является проектом веб-сайта, а не проектом веб-приложения.

в этом случае цель "опубликовать" не может быть опцией, но "AspNetCompiler" является решением.

создайте xml-файл с содержимым ниже и вызовите его из MSBuild.

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Target Name="PrecompileWeb">
        <AspNetCompiler
            VirtualPath="/MyWebSite"
            PhysicalPath="c:\inetpub\wwwroot\MyWebSite\"
            TargetPath="c:\precompiledweb\MyWebSite\"
            Force="true"
            Debug="true"
            FixedNames="True"
        />
    </Target>
</Project>

ссылка на эту задачу здесь и вы можете настроить все параметры un / check.

FixedName= "True" равно проверке " использовать фиксированное именование и отдельная страница...' опцион.

затем вы вызываете этот файл из MSBuild вместо файла решения.

MSBuild your.xml /p:Configuration=<Debug/Release>

пока ваши библиотеки классов ссылаются на ваш проект веб-сайта, они будут построены вместе.


MSBuild.exe **MYPROJ**.sln 
/p:outdir="Z:\output\",OutputPath="Z:\output\",webprojectoutputdir="Z:\output\",configuration=RELEASE 
/t:Clean;Build 

/flp1:logfile=Z:\output\\Log_msbuild.log;verbosity=detailed 
/flp2:logfile=Z:\output\\Log_warnings.log;warningsonly;verbosity=detailed 
/flp3:logfile=Z:\output\\Log_errors.log;errorsonly;verbosity=detailed 

/nologo 
/noconlog

он может компилировать все типы проектов (Web, webservice, desktop,..) и он может создавать файлы журнала как (buildlog, ошибка и предупреждения).


извините за поздний ответ, и спасибо за вклад Алана. К сожалению, ваше предложение не сработало, поэтому я сделал следующее:

  • выбрать This build does not copy output files to a drop folder на вкладке Build defaults
  • использовать шаблон по умолчанию на вкладке процесс
  • выбрать AsConfigured значение Output location под 2. Build на вкладке процесс
  • используйте этот аргумент MSBuild строка:

    /p:DeployOnBuild=True;DeployTarget=PipelinePreDeployCopyAllFilesToOneFolder;PackageTempRootDir="\192.168.x.x\Nightly\MainBranch";AutoParameterizationWebConfigConnectionStrings=false

этот результат-следующая папка, которую я использую в качестве webroot для тестового сайта:\192.168.x.x\Nightly\MainBranch\PackageTmp. Это, очевидно, не является оптимальным, так как я бы предпочел не иметь PackageTmp папка, и я также не тестировал, что происходит, когда в одном решении есть несколько веб-приложений, но я не могу использовать больше времени на эту проблему.

Я действительно не понимаю, почему Microsoft сделала такую простую задачу настолько сложной.