मैं निम्नलिखित MSBuild स्क्रिप्ट है:उसी एमएसबिल्ड लक्ष्य को दो बार कैसे बुलाया जाए?
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
DefaultTargets="All">
<PropertyGroup>
...
</PropertyGroup>
<UsingTask AssemblyFile="$(GallioTaskPath)" TaskName="Gallio.MSBuildTasks.Gallio" />
<Import Project="$(MSBuildCommunityTasksPath)\MSBuild.Community.Tasks.Targets" />
<ItemGroup>
...
</ItemGroup>
<Target Name="CheckServerHostsItemGroup"
Condition="'$(NoServerHosts)' != True">
...
</Target>
<Target Name="RunServerHosts" DependsOnTargets="CheckServerHostsItemGroup"
Condition="'$(NoServerHosts)' != True">
...
</Target>
<Target Name="KillServerHosts" DependsOnTargets="CheckServerHostsItemGroup"
Condition="'$(NoServerHosts)' != True">
...
</Target>
<Target Name="KillServerHosts2"
Condition="'$(NoServerHosts)' != True">
<MSBuild Projects="$(MSBuildProjectFile)" Targets="KillServerHosts" Properties="Configuration=$(Configuration)" />
</Target>
<Target Name="All" DependsOnTargets="Build;RunServerHosts;Test;KillServerHosts2">
<OnError ExecuteTargets="KillServerHosts2" />
</Target>
<Target Name="Test">
...
<Error Text="Tests execution failed with exit code $(ExitCode)" Condition="'$(ExitCode)' != 0" />
</Target>
<Target Name="CheckSolutionsItemGroup">
...
</Target>
<Target Name="Build" DependsOnTargets="CheckSolutionsItemGroup;KillServerHosts">
...
</Target>
<Target Name="Clean" DependsOnTargets="CheckSolutionsItemGroup;KillServerHosts">
...
</Target>
</Project>
मैं स्थान बचाने के लिए लक्ष्य के शव को हटा दिया है और क्योंकि वे अप्रासंगिक हैं। हालांकि, अगर कोई सोचता है कि वे हैं, तो मैं उन्हें शामिल करूंगा। KillServerHosts
, और एक अच्छे कारण के लिए जो मैं दो बार आह्वान करने के लिए इच्छा -
वैसे भी, के रूप में एक देख सकते हैं, वहाँ एक लक्ष्य है। बिल्ड करने से पहले, यह सुनिश्चित करने के लिए कि कोई असेंबली लॉक नहीं हो जाती है और परीक्षण के बाद दूसरी बार "तालिका को साफ करने" के लिए पूरा किया जाता है।
स्वाभाविक रूप से, लक्ष्य KillServerHosts
आह्वान करने के लिए काम नहीं करता है की कोशिश कर दो बार, MSBuild एक ही लक्ष्य दो बार निर्माण करने के लिए मना कर दिया। तो, मैं KillServerHosts2
लक्ष्य का आह्वान करके धोखा देने की कोशिश कर रहा हूं। समस्या यह है कि कभी-कभी यह काम करता है और कभी-कभी ऐसा नहीं होता है।
अगर मैं कमांड लाइन से KillServerHosts
लक्ष्य चलाने यह हमेशा प्रासंगिक सर्वर मेजबान को मारता है, तो इस संबंध से यह ठीक काम करता है।
कोई भी विचार?
विशेषता 'परियोजनाएं' होनी चाहिए, न कि 'परियोजना'। इस तरह आपका सुझाव पूरी तरह से काम करता है, धन्यवाद! –
मैंने अभी इसे ठीक कर दिया है। –