كيفية بناء وظيفة إضافية للمكتب دون تسجيلها على نظام الإنشاء؟

StackOverflow https://stackoverflow.com/questions/2345290

سؤال

نحن نقوم ببناء إضافات Office 2007 باستخدام Visual Studio 2008. يتم تنفيذ بنياتنا عبر خادم تكامل مستمر (جهاز واحد) يبني كلما تحقق من التغييرات أو طلب واحد يدويًا. يمكن للخادم أداء بنيات متزامنة.

لقد لاحظنا أنه عندما تقوم Visual Studio 2008 بإنشاء وظيفة إضافية في Office 2007 ، فإنها تقوم أيضًا بتسجيلها على النظام الذي يؤدي البناء ، على الرغم من أن Office لم يتم تثبيته على خادم التكامل.

هل يعرف أي شخص طريقة لمنع Visual Studio 2008 من تسجيل الوظيفة الإضافية أثناء قيامها ببناءها؟

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

المحلول

على افتراض أن خادم التكامل المستمر الخاص بك يستخدم MSBUILD لإنشاء الوظيفة الإضافية لـ Office 2007 ، فإن حل سريع هو تنفيذ هدف بناء يتبعه هدف VSTOCLEAN.

يمكنك تحقيق ذلك من خلال إنشاء ملف مشروع MSBuild (master.proj) يتحكم في عملية الإنشاء كما هو موضح في المثال التالي:

<Project 
  DefaultTargets="Build" 
  xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >
  <PropertyGroup>
    <WorkingDirectory>C:\BASE_DIR\</WorkingDirectory>
  </PropertyGroup>

  <ItemGroup>
    <VstoProject Include = "$(WorkingDirectory)OfficeAddInProject1.csproj"/>
    <VstoProject Include = "$(WorkingDirectory)OfficeAddInProject1.csproj"/>
  </ItemGroup>

  <Target Name="Build">
    <MSBuild Projects="@(VstoProject)" Targets="Build;VSTOClean" />
  </Target>
</Project>

تحديث:إذا لم يكن التنظيف بعد ذلك غير كافٍ ، فيمكنك إيقاف عملية التسجيل عن طريق تجاوز العقار (VSTO_ProjectType). للحصول على الوظيفة الإضافية المكتبية ، تم تعيين هذه الخاصية تطبيق الذي يجبر عملية التسجيل. من خلال تعيينه على قيمة مخصصة تقوم بتعطيل التسجيل. تسرد هذه الأمثلة صراحة المشاريع التي يجب إنشاؤها ولكن يمكنك اختبارها أيضًا عن طريق تحديد ملف حل. ومع ذلك ، يجب على خادم CI استخدام MSBUILD مباشرة وليس مقابل أداء الإنشاءات.

<Project 
  DefaultTargets="Build" 
  xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >
  <PropertyGroup>
    <WorkingDirectory>C:\BASE_DIR\</WorkingDirectory>
  </PropertyGroup>

  <ItemGroup>
    <VstoProject Include = "$(WorkingDirectory)OfficeAddInProject1.csproj"/>
    <VstoProject Include = "$(WorkingDirectory)OfficeAddInProject1.csproj"/>
  </ItemGroup>

  <Target Name="Build">
    <MSBuild 
        Projects="@(VstoProject)" 
        Targets="Build" 
        Properties="VSTO_ProjectType=Custom" />
  </Target>
</Project>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top