المهمة أو msbuild.exe مع nant؟
-
19-09-2019 - |
سؤال
يبدو أن هناك (على الأقل) خياران للحصول على Nant لاستخدام ملفات CSProj: باستخدام مهمة nantcontrib أو استخدام msbuild.exe مباشرة (على سبيل المثال، codecampserver.). هل أقرأ هذا الحق، وإذا كان الأمر كذلك، فما هي ميزة استخدام Msbuild.exe عبر مهمة NantContrib؟
المحلول
NantContrib يفترض .NET Framework v2.0. إذا كنت ترغب في استخدام .NET 3.5، فستحتاج إلى الاتصال Msbuild.exe مباشرة. أثناء الترقية إلى إصدارات جديدة من .NET، تحتاج فقط إلى تعديل خاصية MsbuildPath.
إليك مثال:
<property name="MSBuildPath" value="C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe"/>
<target name="build">
<exec program="${MSBuildPath}">
<arg line='"${SolutionFile}"' />
<arg line="/property:Configuration=${SolutionConfiguration}" />
<arg value="/target:Rebuild" />
<arg value="/verbosity:normal" />
<arg value="/nologo" />
<arg line='/logger:"C:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll"'/>
</exec>
</target>
القيمة MSBuildPath
للحصول على إصدارات مختلفة من .NET
- 2.0, 3.0
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\MSBuild.exe
- 3.5
C:\Windows\Microsoft.NET\Framework64\v3.5\MSBuild.exe
- 4، 4.5.x، 4.6.x، 4.7.x
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe
لبناء 32 بت، والتغيير Framework64
ل Framework
تحديثمتابعة بعض التعليقات، value
يتم استخدام السمة لمعلمات لا تحتوي على مسافات. line
يستخدم في المعلمات التي يجب تحديدها بسبب المسافات. خلاف ذلك، سيستخدم التطبيق المساحة كنهاية الإدخال.
نصائح أخرى
هنا هدف بسيط
<target>
<loadtasks assembly="${nant::get-base-directory()}/../../nantcontrib-0.85/bin/NAnt.Contrib.Tasks.dll" />
<msbuild project="${filepath.root}/yourproject.csproj" verbose="true">
<arg value="/p:Platform=${build.platform}" />
<arg value="/t:Rebuild" />
<arg value="/p:OutputPath=${build.dir}/bin/" />
</msbuild>
</target>