سؤال

بدأت استخدام WiX من أجل القيام الآلي يبني لخلق msi من مشاريع c# و هل تعاني من الخطأ "غير معرف المعالج متغير '$(فار.MyProject.TargetDir)'"

أنا باستخدام أحدث WiX v3.0.5419.داخل وكسس الملف أحاول استخدامها من قبل المعالج المتغيرات المدرجة في هذه الصفحة (http://blogs.msdn.com/jrock/archive/2008/01/29/complete-list-of-candle-preprocessor-variables.aspx)

<Component Id="MyId" Guid="MyGuid">
   <File Id="MyId" Name="MyName" KeyPath="yes" 
      Source="$(var.MyProject.TargetDir)\MyName.dll" />
</Component>

واضاف لقد مرجعا MyProject إلى .wixproj وإذا كنت فتحه في المفكرة أستطيع أن أرى الإشارة.

<ItemGroup>
  <ProjectReference Include="..\MyProject.csproj">
    <Name>MyProject</Name>
    <Project>{guid}</Project>
    <Private>True</Private>
  </ProjectReference>
</ItemGroup>

هذا هو بلدي نانت بناء النصي التي تستخدم لإنشاء msi.ربما لأن .wixproj يعرف عن مشروع المرجعية التي لا تستخدم في بناء ؟

<exec basedir="${tools.wix}" managed="true" program="candle.exe">
  <arg line='-out "${tools.wix.objfile}"' />
  <arg value="../MySetup.wxs" />
</exec>

يمكن لأي شخص أن ينير لي على هذا من فضلك ؟

هل كانت مفيدة؟

المحلول

كما لاحظ بالفعل ، نانت بناء السيناريو هو عدم استخدام wixproj الملف على الإطلاق.

أنت خلط اثنين من الطرق المختلفة لبناء wix الإعداد هنا:

  1. يمكنك استخدام candle.exe و light.exe أدوات سطر الأوامر مباشرة.هذا يتجاهل .wixproj الملف.هذا هو ما تقومون به في نانت بناء السيناريو.لتمرير قيم المعالج المتغيرات مثل $(var.MyProject.TargetDir), استخدم خيارات مثل -dMyProject.TargetDir=c:\foo.

  2. يمكنك المؤلف .wixproj الملف مع نذري (visual studio add-on wix).مثل كل مشروع visual studio الملفات ، wixproj الملف هو في الواقع msbuild الملف الذي يمكن بناء مع msbuild.exe.المتغيرات مثل $(var.MyProject.TargetDir) يتم تلقائيا تعيين msbuild المهام لبناء wix الاجهزة إذا الصحيحة مرجع المشروع موجود.

أنصحك بناء wixproj الملف مع <msbuild> نانت المهمة.هذا يضمن أن نانت بناء يفعل نفس الشيء عندما كنت بناء الإعداد يدويا من visual studio.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top