#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.