Как создать файл с помощью MSBuild

#c# #batch-file #msbuild

#c# #пакетный файл #msbuild

Вопрос:

Я создал файл C #. Обычно мы создаем его с помощью Visual Studio IDE. Но я хочу собрать его с помощью MSBuild.

У меня есть один .bat и .xml файл. Что именно мне нужно сделать с .xml файлом, чтобы успешно собрать этот .cs файл?

Мой .xml файл:

 <property environment="env" />
<property name="tools.dir" location="${env.TOOLS_DIR}"/>

<target name="Buildproject" >
<echo message="I am building project"/>
</target>   

<target name="runtests" depends="Buildproject" description="This is my first ant target">
<echo message="Running tests"/>
</target>

<target name="publish" depends="runtests">
<echo message="Publish artifact"/>
</target>
  

Мой .bat файл

УСТАНОВИТЬ WORKSPACE=% ~ dp0 УСТАНОВИТЬ TOOLS_DIR=УСТАНОВИТЬ buildtools BUILD_FILE=sample_build.xml @echo отключить РАБОЧЕЕ ПРОСТРАНСТВО echo: %WORKSPACE% echo TOOLS_DIR: %TOOLS_DIR% echo BUILD_FILE: %BUILD_FILE% %TOOLS_DIR%/apache-ant/bin/ant -Divy.cache.ttl.default=вечный -buildfile %BUILD_FILE%

Комментарии:

1. Этот XML-файл не является файлом сборки. Он не содержит никакой информации о проекте или о том, как он должен быть собран. Если бы у вас был подходящий файл MSBuild, вы бы просто запустили msbuild.exe и указали его в качестве аргумента командной строки.

Ответ №1:

Ваш XML-файл неверен. Похоже, что это, возможно, файл nant или какая-то другая спецификация.

Вот ваш самый простой файл .proj (определение msbuild).

Сохраните это (в том же каталоге, что и ваш файл .sln) как «MyMsbuildDef.proj»

 <?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="AllTargetsWrapped">
    <PropertyGroup>
        <!-- Always declare some kind of "base directory" and then work off of that in the majority of cases  -->
        <WorkingCheckout>.</WorkingCheckout>
    </PropertyGroup>

    <Target Name="AllTargetsWrapped">
        <CallTarget Targets="BuildItUp" />
    </Target>


    <Target Name="BuildItUp" >
        <MSBuild Projects="$(WorkingCheckout)MySolution_Or_MyProject_File.sln" Targets="Build" Properties="Configuration=$(Configuration)">
            <Output TaskParameter="TargetOutputs" ItemName="TargetOutputsItemName"/>
        </MSBuild>
        <Message Text="BuildItUp completed" />
    </Target>

</Project>
  

Очевидно, измените «MySolution_Or_MyProject_File.sln» на ваше имя .sln.

Теперь создайте файл .bat с именем «MyMsbuildCallIt.bat» и поместите это в:

 REM set __msBuildDir=%WINDIR%Microsoft.NETFrameworkv2.0.50727
REM set __msBuildDir=%WINDIR%Microsoft.NETFrameworkv3.5
set __msBuildDir=%WINDIR%Microsoft.NETFrameworkv4.0.30319

call "%__msBuildDir%msbuild.exe" /target:AllTargetsWrapped "MyMsbuildDef.proj" /p:Configuration=Debug;FavoriteFood=Popeyes /l:FileLogger,Microsoft.Build.Engine;logfile=MyMsbuildDef_Debug.log
call "%__msBuildDir%msbuild.exe" /target:AllTargetsWrapped "MyMsbuildDef.proj" /p:Configuration=Release;FavoriteFood=Popeyes /l:FileLogger,Microsoft.Build.Engine;logfile=MyMsbuildDef_Release.log


set __msBuildDir=
  

И запустите файл .bat.

Это ваш самый простой сценарий msbuild.