لماذا لا يمكنني تثبيت خدمتي (وقت التشغيل الأحدث من وقت التشغيل المحمّل)؟

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

سؤال

لذلك قمت ببناء خدمة في C# وأحاول استخدام الأمر التالي لتثبيته:

C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727\installutil.exe MyService.exe >> installLog.txt

فشل. عندما أنظر إلى installlog.txt ، أحصل على هذا:

Microsoft (R) .NET Framework Installation utility Version 2.0.50727.3053
Copyright (c) Microsoft Corporation.  All rights reserved.

Exception occurred while initializing the installation:
System.BadImageFormatException: Could not load file or assembly 'file:///C:\MyService.exe' or one of its dependencies. This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded..

نفس النهج يعمل بشكل جيد لتثبيت مجموعة مختلفة. أشعر أن الأمر قد يكون لأن الشخص الذي فشل قد كتب لـ .NET 4.0 ، والذات التي تعمل في 3.5.

هل لدى أي شخص أي خبرة في هذه المشكلة؟

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

المحلول 2

لا أحد يقترب حتى من الحصول على هذا!

هذا ما كان علي فعله:

  1. انقر بزر الماوس الأيمن فوق مشروع الخدمة في Visual Studio ، انتقل إلى "الخصائص"
  2. قم بتعيين "كائن بدء التشغيل" على اسم الخدمة (تم تعيينه على القيمة "(وليس تعيين)").
  3. يحفظ.
  4. يبني
  5. حاول التثبيت مرة أخرى.
  6. إنها تعمل! ياي! يمكننا جميعًا العودة إلى المنزل!

رابط إلى مقالة مشروع رمز ساعد ذلك:

نصائح أخرى

أنت تستخدم installUtil.exe الخاطئة إذا تم تصميم التطبيق الخاص بك مقابل .NET 4.0. استخدم installUtil.exe في المجلد 4.0.

C: Windows Microsoft.net Framework64 v4.0.30319 installUtil.exe

لأولئك منكم الذين لا يجدون أن هذا يحدد مشكلتهم ، تحتاج إلى النظر في ظروف إطلاق ملف .vdproj وتغيير إطار .NET إلى 4: http://www.alexjamesbrown.com/uncategorized/deploying-net-4-project-error-1001-system-badimageformatexception/

إذا قمت بتجميع جهاز X64 ، فتأكد من الدخول في التكوين MGR وتغيير البناء إلى X64. بالطبع تريد التحقق للتأكد من أنك تستخدم الإصدار الصحيح من installUtil.exe. g'luck.

بالنسبة لي ، قمت فقط بالضغط الأيمن على exe كنت أحاول التثبيت والنقر على "إلغاء الحظر"

أعتقد أنك تقدم الإجابة في سؤالك:

"تم تصميم هذا التجميع بواسطة وقت تشغيل أحدث من وقت التشغيل الذي تم تحميله حاليًا ولا يمكن تحميله .."

لذلك ، قد تكون قد قمت بتجميع وقت التشغيل باستخدام وظائف أحدث (وهي في أطر عمل أحدث) ولكن الكمبيوتر الذي تقوم بتسجيله يعمل على إصدار أقل.

على سبيل المثال. ترجمة لـ .NET 3.5 ولكن قم بتثبيت الخدمة بعد ذلك على .NET 2.0 لن يكون له معنى.

نظرًا لأنك قادر على تثبيت الخدمات على جهاز الوجهة ، أعتقد أنك مسؤول بالفعل. لذلك فقط ترقية .NET Framework على آلهة الخدمة.

هل حاولت ببساطة الكتابة MyService.exe /install في نافذة موجه الأوامر في الدليل الذي يحتوي على خدمة Windows الخاصة بك؟ لقد نجحت بالنسبة لي في الماضي. يمكنك أيضًا إلغاء تثبيت خدمة Windows باستخدام MyService.exe /uninstall.

كان لي نفس المشكلة. في البداية ، كان مشروعي في طريق طويل جدًا على D: داخل مجلد التصحيح في مشروعي. تم حل المشكلة عندما لقد قمت بنقل ملف خدمة .exe إلى موقع آخر مع مسار أقصر وبدأت بـ "C: ".

أنا أيضًا أستخدم هذا الملف الدُفعات لتثبيت خدماتي

@ECHO OFF

REM Directory for .NET 4. Check for other version directories.
set DOTNETFX2=%SystemRoot%\Microsoft.NET\Framework\v4.0.30319
set PATH=%PATH%;%DOTNETFX2%

echo Installing MyService...
echo ---------------------------------------------------
InstallUtil /i C:\ServiceFolder\MyService.exe
echo ---------------------------------------------------
echo Done.
pause

إذا جربت كل ما سبق وما زالت ترى نفس الخطأ ، تحقق مزدوجًا ما إذا كان لديك تطبيق 32 بت أو أي DLL 32 بت وخادمك هو خادم 64 بت.

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