سؤال

لدي مخصص المهمة التي أريد أن تنفيذ عند بناء بلدي C# المشاريع.هذه المهمة تقع في MyTask.dll التي مراجع أخرى الجمعية ، MyCommon.DLL.

المشكلة هي أن MyCommon.dll يقع في "..\Common\MyCommon.dll" نسبة إلى MyTask.dll مما يضعه خارج AppBase dir بالنسبة MSBuild العملية.لقد تأكدت أن هذا هو في الواقع مشكلة من خلال تحليل MSBuild سجل ورؤية الانصهار تقرير عن ملزمة الفشل.

ما الذي يمكنني القيام به لجعل الانصهار تجد MyCommon.dll خلال بناء العملية ؟ علما أن تتحرك الجمعية كسر بلدي التطبيق ، والذي يعتمد أيضا على ذلك.

تحديث:حسنا, يبدو أنني سأذهب مع استخدام نسخة أنس.حلول أخرى تتطلب منظومة واسعة من التعديلات التي ليس هناك ما يبرر هنا.

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

المحلول

حتى نسخ ذلك بدلا من ذلك ؟ مجرد فكرة.نسخة هناك فقط لدعم بناء حذف مرة كنت فعلت مع ذلك.

نصائح أخرى

أرى حلول متعددة :

1 : إضافة تجميع في GAC (التجميع الخاص بك يجب أن يكون اسم قوي)

gacutil /I <assembly name> 

2 : موقع الجمعية من خلال Codebases أو التحقيق, في آلة.التكوين الملف أو في msbuild.exe.config .

<configuration>
   <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
         <dependentAssembly>
            <assemblyIdentity name="MyCommon"
                              publicKeyToken="32ab4ba45e0a69a1"
                              culture="neutral" />
            <codeBase version="2.0.0.0"
                      href="file://C:/yourpath/MyCommon.DLL"/>
         </dependentAssembly>
      </assemblyBinding>
   </runtime>
</configuration>

3 : نسخ الجمعية في نفس الدليل قبل حذفه بعد ، مثل ديفيد م قال.

خيار هو استخدام ILMerge دمج التبعية في مهمة الجمعية.

كل هذه "الحلول" خلق المزيد من التبعيات التي تعقد البيئة.يجب أن يكون هناك أسهل طريقة لتحديث مسار التحقيق في وقت التشغيل..

على وجه التحديد MSBuild يجب أن تسمح لك لإضافة التحقيق مسارات الخاصة بك .proj, أو تحديد التابعة dlls

يمكنك تحديد مخصص UsingTask:

<UsingTask TaskName="Task" AssemblyFile="Assembly.dll" />

ولكن لا يمكنك إضافة تبعيات?وينبغي أن تدرج...هنا مع شيء من هذا القبيل

<UsingTask TaskName="Task" AssemblyFile="Assembly.dll">
<DependantAssembly AssemblyFile="dependant.dll"/>
</UsingTask>

لكن لا هذه ليست معتمدة...

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