.NET Exextable لن يتم تحميل التجميعات المرجعية عند بدء تشغيلها من localhost xyz

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

سؤال

بلدي .NET قابلة للتنفيذ abc.exe المراجع عدة تجمعات. يسمى واحد منهم xyz.core.exe. أواجه مشكلة في العمل عند بدء تشغيله من موقع شبكة محدد من خلال اسم المشاركة مع مسار مثل \\localhost\xyz\abc.exe. هذا يعمل بشكل جيد إذا قمت بتركيب خطاب محرك الشبكة المسمى Z: تشغيل \\localhost\xyz وإذا أطلقت Z:\abc.exe.

. يبدو أن NET مرتبط أثناء محاولة تحميل xyz.core.exe التجميع من الحصة. يرمي أ System.IO.FileNotFoundException استثناء مع معلومات سجل الاندماج التالية:

Assembly manager loaded from:  C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll
Running under executable  \\localhost\xyz\abc.exe
--- A detailed error log follows. 

=== Pre-bind state information ===
LOG: User = Workstation\arnaud
LOG: DisplayName = xyz.core, Version=2.5.2.1001, Culture=neutral, PublicKeyToken=...
(Fully-specified)
LOG: Appbase = file://localhost/xyz/
LOG: Initial PrivatePath = NULL
Calling assembly : abc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=...
===
LOG: This bind starts in default load context.
LOG: No application configuration file found.
LOG: Using machine configuration file from     C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\machine.config.
LOG: Post-policy reference: xyz.core, Version=2.5.2.1001, Culture=neutral, PublicKeyToken=...
LOG: Attempting download of new URL file://localhost/xyz/xyz.core.DLL.
LOG: Attempting download of new URL file://localhost/xyz/xyz.core/xyz.core.DLL.
LOG: Attempting download of new URL file://localhost/xyz/xyz.core.EXE.
LOG: Attempting download of new URL file://localhost/xyz/xyz.core/xyz.core.EXE.

بالنظر إلى هذا من خلال زاوية أخرى مع مراقبة العملية ، أرى بعض المحاولات للوصول إلى محرك الأقراص المحلي مع المسارات التالية:

C:\xyz\xyz.core.dll
C:\xyz\xyz.core\xyz.core.dll
C:\xyz\xyz.core.exe
C:\xyz\xyz.core\xyz.core.exe

كما لو أن المحمل يسيء فهم نية التحميل من حصة الشبكة وأسقط \\localhost ليستخدم C: في حين أن. يبدو أن المشكلة لا تكون مرتبطة بإعدادات الأمان (لم أفسد أبدًا مع Caspol على جهازك) وأنا أستخدم .NET 3.5 SP1 الذي يسمح للبدء في المشاركة من المشاركة.

وحقيقة أن بدء البرنامج من خلال عمل خطاب محرك الشبكة المعين المعادل يجب أن تؤكد أن هذه ليست مشكلة أمان.

لا ترتبط المشكلة بحقيقة أن الإشارة إلى مجموعة exe أيضًا ، لأنها تنتج نفس النوع من أخطاء الحمل مع إشارات إلى مجموعات DLL العادية.

أي أفكار عما يمكن أن يكون سبب مشكلة التحميل هذه؟ هل واجه أي شخص آخر مثل هذا الموقف؟

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

المحلول

لا أستطيع أن أشرح "C: xyz xyz.core.dll" (باستثناء فضول) ، لكن الباقي هو بالضبط ما أتوقعه.

يبدو أن كل هذا مرتبط بأمان الوصول إلى التعليمات البرمجية. حتى وقت قريب ، ستحتاج إلى استخدام "Caspol" لتكوين CAS للسماح لك بذلك ينفذ EXE من أي نوع من مشاركة الشبكة. تم تغيير هذا (إما .NET 3.5 أو .NET 3.5 SP1) من هذا القبيل تعيين الأسهم ("F:" إلخ) فعل احصل على إذن ، لكن أسهم UNC لا تفعل ذلك.

أنت تستطيع استخدم "Caspol" لمنح الوصول إلى UNC (مثله) ، لكن IMO هو خيار أفضل بكثير للتبديل إلى نشر النقر. هذا يمكن ما يزال يكون عبر مشاركة شبكة ، ولكنه يتضمن معلومات نشر إضافية تتيح لوقت التشغيل تثبيته. أنا يصدق يمكن أيضًا استخدامه لنشر مثل هذا الأمر في وضع عدم الاتصال (عندما تكون الشبكة غير متوفرة) ولكن التحديث تلقائيًا من المشاركة عندما يكون ذلك ممكنًا أعرف أن هذا يعمل لنشر HTTP - I يصدق إنه يعمل للشبكة). يعرض IDE هذا تحت ستار "Publish" ، وهو حوالي 5 نقرات تم إنجازها.

نصائح أخرى

أنا مرتبك - إذا كنت تستخدم مضيفًا محليًا ، فمن المفترض أن تذهب إلى Harddrive المحلي.

هل تحاول إعادة تعيين المضيف المحلي إلى مكان آخر؟ إذا كان هذا هو الحال ، فقد يكون هذا ما يسبب المشاكل - حاول استخدام اسم مختلف

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