का उपयोग कर मैं MSDeploy के माध्यम से अपनी पैकेजिंग/तैनाती प्रक्रिया के हिस्से के रूप में एक आदेश चलाने की कोशिश कर रहा हूं। विशेष रूप से, मैं अपने डीएलएल में से एक के खिलाफ installutil चलाकर एक कस्टम इवेंट लॉग बनाने की कोशिश कर रहा हूं, लेकिन मुझे सापेक्ष पथ को डीओएल पर तैनाती निर्देशिका से निर्दिष्ट करने में समस्या हो रही है। प्रारंभ करने के लिए, मैंने अपनी मैनिफ़ेस्ट फ़ाइल के अंदर runCommand प्रदाता उत्पन्न करने के लिए नीचे दिए गए कॉन्फ़िगर को मेरे csproj में जोड़ा। कृपया डीएलएल के लिए पूर्ण पथ नोट करें।MSDeploy runCommand सापेक्ष पथ
<PropertyGroup>
<!-- Extends the AfterAddIisSettingAndFileContentsToSourceManifest action to create Custom Event Log -->
<IncludeEventLogCreation>TRUE</IncludeEventLogCreation>
<AfterAddIisSettingAndFileContentsToSourceManifest Condition="'$(AfterAddIisSettingAndFileContentsToSourceManifest)'==''">
$(AfterAddIisSettingAndFileContentsToSourceManifest);
CreateEventLog;
</AfterAddIisSettingAndFileContentsToSourceManifest>
</PropertyGroup>
<Target Name="CreateEventLog" Condition="'$(IncludeEventLogCreation)'=='TRUE'">
<Message Text="Creating Event Log" />
<ItemGroup>
<MsDeploySourceManifest Include="runCommand">
<path>installutil C:\inetpub\wwwroot\MyTestApp\bin\BusinessLayer.dll</path>
</MsDeploySourceManifest>
</ItemGroup>
</Target>
<ItemGroup>
MSBuild बुला के बाद, इस सही ढंग से मेरी प्रकट उत्पन्न मेरी package.zip के अंदर। जब मैं MyTestApp.deploy.cmd/वाई भाग गया इसे सही ढंग से msdeploy कहा जाता है और \ wwwroot \ MyTestApp Inetpub करने के लिए अपने फ़ाइलों को तैनात किया है और नीचे प्रकट से मेरे आदेश भागा:
<runCommand path="installutil C:\inetpub\wwwroot\MyTestApp\bin\BusinessLayer.dll ... etc
समस्या मैं कर रहा हूँ मुझे क्या करना है इस डीएलएल पथ को c: \ inetpub \ आदि को हार्डकोड नहीं करना चाहते हैं। डिफ़ॉल्ट वेब साइट के तहत मेरी तैनाती निर्देशिका से सापेक्ष पथ का उपयोग करके उपरोक्त कॉल कैसे कर सकता हूं? आदर्श रूप में, मैं इस पथ को लेने के लिए MSDeploy चाहूंगा और DLL को खोजने के लिए इसे चलाने के लिए एक चर के रूप में पास कर दूं। तो मैं कुछ लिख सकता था: <path>installutil $DeploymentDir\NewTestApp\bin\BusinessLayer.dll</path>
हार्ड कोडिंग में एक पूर्ण पथ को कड़ी-कोड करने के बारे में चिंता किए बिना।
क्या हर बार मेरे डीएलएल के पूर्ण पथ का उपयोग किए बिना ऐसा करने का कोई तरीका है?
उपयोग कर सकते हैं यह कुछ हद तक एक आधिकारिक सिफारिश होने के लिए, भी लगता है: http://social.msdn.microsoft.com/Forums/en/msbuild/थ्रेड/1044058c-f762-456b-8a68-b0863027ce47 –