क्लिकऑन एप्लिकेशन को तैनात करने में त्रुटि - प्रकट में संदर्भ डाउनलोड किए गए असेंबली की पहचान से मेल नहीं खाता है


105

मैं एक ClickOnce एप्लिकेशन को लागू करने का प्रयास कर रहा हूं, लेकिन इंस्टॉलेशन क्लाइंट पर विफल रहता है। यहाँ त्रुटि लॉग है:

PLATFORM VERSION INFO
Windows             : 6.1.7601.65536 (Win32NT)
Common Language Runtime     : 4.0.30319.1
System.Deployment.dll       : 4.0.30319.1 (RTMRel.030319-0100)
clr.dll             : 4.0.30319.1 (RTMRel.030319-0100)
dfdll.dll           : 4.0.30319.1 (RTMRel.030319-0100)
dfshim.dll          : 4.0.31106.0 (Main.031106-0000)

SOURCES
Deployment url          : http://MyProduct.com/download/workstation/MyProduct%20Front%20Desk.application
                    Server      : Microsoft-IIS/7.5
                    X-Powered-By    : ASP.NET
Deployment Provider url     : http://MyProduct.com/Download/Workstation/MyProduct%20Front%20Desk.application
                    Server      : Microsoft-IIS/7.5
                    X-Powered-By    : ASP.NET
Application url         : http://MyProduct.com/Download/Workstation/Application%20Files/MyProduct%20Front%20Desk_1_0_0_7/MyProduct%20Front%20Desk.exe.manifest
                    Server      : Microsoft-IIS/7.5
                    X-Powered-By    : ASP.NET

IDENTITIES
Deployment Identity     : MyProduct Front Desk.application, Version=1.0.0.7, Culture=neutral, PublicKeyToken=df343a0868ab2d74, processorArchitecture=msil
Application Identity        : MyProduct Front Desk.exe, Version=1.0.0.7, Culture=neutral, PublicKeyToken=df343a0868ab2d74, processorArchitecture=msil, type=win32

APPLICATION SUMMARY
* Installable application.

ERROR SUMMARY
Below is a summary of the errors, details of these errors are listed later in the log.
* Activation of http://MyProduct.com/download/workstation/MyProduct%20Front%20Desk.application resulted in exception. Following failure messages were detected:
    + Reference in the manifest does not match the identity of the downloaded assembly MyProductSiteServer.exe.

COMPONENT STORE TRANSACTION FAILURE SUMMARY
No transaction error was detected.

WARNINGS
There were no warnings during this operation.

OPERATION PROGRESS STATUS
* [03/17/11 11:51:04] : Activation of http://MyProduct.com/download/workstation/MyProduct%20Front%20Desk.application has started.
* [03/17/11 11:51:04] : Processing of deployment manifest has successfully completed.
* [03/17/11 11:51:04] : Installation of the application has started.
* [03/17/11 11:51:05] : Processing of application manifest has successfully completed.
* [03/17/11 11:51:06] : Found compatible runtime version 4.0.30319.
* [03/17/11 11:51:06] : Request of trust and detection of platform is complete.

ERROR DETAILS
Following errors were detected during this operation.
* [03/17/11 11:51:30] System.Deployment.Application.InvalidDeploymentException (RefDefValidation)
    - Reference in the manifest does not match the identity of the downloaded assembly MyProductSiteServer.exe.
    - Source: System.Deployment
    - Stack trace:
        at System.Deployment.Application.DownloadManager.ProcessDownloadedFile(Object sender, DownloadEventArgs e)
        at System.Deployment.Application.FileDownloader.DownloadModifiedEventHandler.Invoke(Object sender, DownloadEventArgs e)
        at System.Deployment.Application.SystemNetDownloader.DownloadSingleFile(DownloadQueueItem next)
        at System.Deployment.Application.SystemNetDownloader.DownloadAllFiles()
        at System.Deployment.Application.FileDownloader.Download(SubscriptionState subState)
        at System.Deployment.Application.DownloadManager.DownloadDependencies(SubscriptionState subState, AssemblyManifest deployManifest, AssemblyManifest appManifest, Uri sourceUriBase, String targetDirectory, String group, IDownloadNotification notification, DownloadOptions options)
        at System.Deployment.Application.ApplicationActivator.DownloadApplication(SubscriptionState subState, ActivationDescription actDesc, Int64 transactionId, TempDirectory& downloadTemp)
        at System.Deployment.Application.ApplicationActivator.InstallApplication(SubscriptionState& subState, ActivationDescription actDesc)
        at System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl)
        at System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(Object state)

COMPONENT STORE TRANSACTION DETAILS
No transaction information is available.

मुख्य एक्सई को मुझे तैनात करने की आवश्यकता है MyProductFrontDesk.exe, जिसमें एक निर्भरता है MyProductSiteServer.exe- और वह प्रतीत होता है जहां त्रुटि डाली जा रही है: "प्रकट में संदर्भ डाउनलोड किए गए विधानसभा MyProductSiteServer.exe की पहचान से मेल नहीं खाता है।"

किस प्रकटीकरण को ठीक करने की आवश्यकता है? और कैसे?


MySiteServer.exe प्रोजेक्ट में Visual Studio समाधान MyProductFrontDesk.exe के समान है? यदि हां, तो क्या आपके बिल्ड कॉन्फ़िगरेशन में दोनों विधानसभाओं का निर्माण करने के लिए चयन किया गया है?
जय

@ जय - हाँ, एक ही समाधान में, दोनों का निर्माण करने के लिए चुना गया।
शाऊल बेहार

जवाबों:


111

विजुअल स्टूडियो 2008 के साथ एक समस्या थी जो डिफ़ॉल्ट मेनिफ़ेस्ट को एम्बेड न करके हल की गई है - उस लेख की टिप्पणियों में से एक यह सुझाव देता है कि समस्या अभी भी Visual Studio 2010 में मौजूद है।

परियोजना के गुणों में -> अनुप्रयोग टैब -> संसाधन -> चेकबॉक्स चिह्न और प्रकट , सेटिंग "डिफ़ॉल्ट सेटिंग्स के साथ एंबेड प्रकट" समस्या का कारण बना। इसे "बिना किसी प्रकट अनुप्रयोग बनाएँ" समस्या को हल करता है।


मुझे टिप्पणी मिली कि 488301 विशेष रूप से उपयोगी है: <assemblyIdentity/>कस्टम मेनिफ़ेस्ट में तत्व को आपकी कस्टम .manifestफ़ाइल में समायोजित किया जा सकता है (या कंपाइलर को सही असेंबली पहचान से बाहर निकालने के लिए छोड़ा जा सकता है) , एक को <requestedExecutionLevel/>क्लिकऑन को तोड़ने के बिना चीजों को निर्दिष्ट करने में सक्षम बनाता है ।
binki

4
मेरा परिदृश्य एक GUI ऐप था जिसे एक 2 ऐप की आवश्यकता है जो एक कंसोल ऐप है। यदि मेरी तरह आप डिफ़ॉल्ट सेटिंग्स नहीं बदलेंगे, तो मैन्युअल रूप से प्रकाशित करने के लिए कि 2 एप्लिकेशन ने एक ऐप बनाया है। जो कि गुण फ़ोल्डर में दिखाई देता है, फिर 1 एप्लिकेशन को फिर से प्रकाशित करने के लिए एक प्रकट को एम्बेड करने की डिफ़ॉल्ट सेटिंग्स को बदलने के बिना काम किया।
अय्यब

7
वीएस 2013 के साथ भी यही समस्या थी। इस समाधान ने काम किया।
ईगलबेक

2
@EagleBeak VS2013 में यह मेनू कहाँ है? मैं "मेनिफ़ेस्ट के बिना एप्लिकेशन बनाने" के बारे में कुछ भी नहीं देखता हूं
नेफैरिस

3
जून 2016 तक, सही उत्तर क्लिकऑन सिक्योरिटी सेटिंग्स को कॉन्फ़िगर करना है (मौरो द्वारा पोस्ट किया गया उत्तर देखें)।
पियरे अरनौद

57

मेरे पास एक ही मुद्दा था जब मैंने किसी अन्य प्रोजेक्ट का संदर्भ जोड़ा।

इसे हल करने का तरीका सभी संदर्भित परियोजनाओं में क्लिकऑन सिक्योरिटी सेटिंग्स को सक्षम कर रहा था क्योंकि इयान ने यहां समझाया (जोर मेरा):

मेरे लिए, जिस तरह से इसे हल किया गया था, यह सुनिश्चित करने के लिए कि समाधान के तहत सभी परियोजनाएं जो " प्रोजेक्ट गुणों " में " सुरक्षा टैब " को उजागर करती थीं, उनके पास विकल्प " क्लिकऑनस सिक्योरिटी सेटिंग्स सक्षम करें " विकल्प के साथ थक गया था " यह एक पूर्ण विश्वास है। आवेदन "चयनित। यह सही ढंग से मेनिफेस्ट बनाने के साथ करना है और यदि इन विकल्पों को हल करने की आवश्यकता नहीं है, तो ये विकल्प स्थापित नहीं होंगे।

मेरा मानना ​​है कि उसी समाधान के तहत किसी अन्य परियोजना का संदर्भ देते समय इसे ठीक करने का यह उचित तरीका है।

लिंक किए गए फ़ोरम पोस्ट की समय सीमा समाप्त हो गई है, लेकिन यह यहां संग्रह पर उपलब्ध है


1
इतने सारे समाधानों को आजमाने के बाद केवल यही समाधान मेरे लिए काम करता है। इसलिए मुझे भी लगता है कि यह स्वीकृत उत्तर होना चाहिए ...
तारेक

आप .cprojफ़ाइल को संशोधित करने के साथ ऐसा ही कर सकते हैं<PropertyGroup><TargetZone>LocalIntranet</TargetZone></PropertyGroup>
VMAtm

मैंने उन दो सेटिंग्स को निष्क्रिय कर दिया था जब मैं साथ में बेवकूफ बना रहा था https://github.com/Squirrel। जब मेरे (गैर-उत्पादन) क्लिकऑन डिपो ने काम करना बंद कर दिया, तो मैं यह सब भूल गया था।
वाल्टर स्टबोज़

35

मैं उसी समस्या का सामना कर रहा था, लेकिन मेरा समाधान बहुत अलग था।

मेरा ClickOnce एप्लिकेशन मेरे समाधान में एक और EXE फ़ाइल परियोजना को संदर्भित कर रहा था, इसलिए जब क्लाइंट ने इसे डाउनलोड किया था, और एक और EXE फ़ाइल थी, तो एक में कोई भी प्रकट नहीं था।

एक और निष्पादन योग्य पर निर्भरता को हटाने से मेरी समस्या हल हो गई।


2
मेरे पास दो EXE भी हैं। निर्भरता को दूर करने से बिल्ड से पूर्ववर्ती EXE को बाहर कर दिया गया है। क्या इसमें शामिल करने का कोई तरीका है?
उरी अब्रामसन

10
मेरे लिए यही समाधान था। मेरी मुख्य EXE परियोजनाओं में से एक था 'स्वयं एक विंडोज़ अनुप्रयोग'। जब मैंने उस प्रोजेक्ट को 'क्लास लाइब्रेरी' में बदल दिया और पुनः प्रकाशित किया, तो सब कुछ काम कर गया।
क्रिस रे

मैंने VS2012 में @ChrisRay के सुझाव का उपयोग किया, और कार्यक्रम बिना किसी कठिनाई के स्थापित किया। धन्यवाद!
रोलन

1
उपयोगकर्ता @Aybe के रूप में एक अन्य उत्तर की टिप्पणियों में उल्लेख करता है, यदि आप दूसरे एप्लिकेशन को डमी प्रकाशित करते हैं, तो उसे अपना स्वयं का प्रकट होगा और फिर आप पहले एप्लिकेशन को प्रकाशित कर सकते हैं और दोनों प्रोग्राम एक साथ काम करेंगे। (मेरे मामले में मेरे पास दो कार्यक्रम हैं, एक जो दूसरे को कॉल करता है।)
डेव कजिनो

मेरे लिए समाधान वास्तव में दोनों (यह और @stuartd) था - मेरे पास एक संदर्भ विधानसभा के रूप में एक EXE है, जिसमें कोई प्रकटन नहीं है। लेकिन मैं इस संदर्भ को "हटा" नहीं सकता क्योंकि मुझे इसका उपयोग करने की आवश्यकता है। इसलिए मुझे इस EXE निर्भरता की परियोजना पर जाना था, स्टुअर्ट के सुझाव को लागू करना था। फिर सब कुछ बढ़िया काम करता है।
KFL

11

मैंने पुष्टि की कि यह समस्या विजुअल स्टूडियो 2010 में भी मौजूद है। प्रोजेक्ट प्रॉपर्टीज में "क्रिएट एप्लिकेशन विदाउट अपियरेंस" का चयन करते हुए - एप्लीकेशन - रिसोर्सेज ने इस समस्या को हल किया।


8
बस एक नोट जो मुझे इस प्रॉपर्टी को प्रोजेक्ट में बदलना था, जिसके बारे में त्रुटि संदेश शिकायत कर रहा था, जो कि मेरे लिए एक प्रोजेक्ट था जिसे प्रोजेक्ट द्वारा संदर्भित किया जा रहा था, मैं वास्तव में प्रकाशित करने की कोशिश कर रहा था, न कि वह प्रोजेक्ट जिसे मैं वास्तव में प्रकाशित करने की कोशिश कर रहा था ।
घातक

6

यह तब भी हो सकता है जब आपके पास अपने प्रोजेक्ट में विभिन्न DLL फ़ाइलों में संदर्भित NuGet पैकेज के दो भिन्न संस्करण हों । मेरे मामले में मैं कैटल नामक एक फ्रेमवर्क का उपयोग कर रहा था, और मेरे पास एक नए संस्करण में एक डीएलएल फ़ाइल में दूसरे (ओवरसाइट) की तुलना में संदर्भित था, लेकिन इससे क्लिकऑन को इस त्रुटि से बाहर निकलना पड़ा। एक ही संस्करण को संदर्भित करने से समस्या हल हो गई।


4

मुझे भी यही समस्या थी, लेकिन मेरा समाधान 'प्लेटफ़ॉर्म लक्ष्य' को 'x86' (प्रोजेक्ट गुण -> बिल्ड टैब) में बदलना था। इसे किसी भी CPU पर सेट किया गया था। जैसे ही मैंने सेटिंग बदली और पुनर्प्रकाशित किया गया, क्लिकऑन इंस्टॉलर पूरा हो गया।


1
इसी तरह का मुद्दा: मैंने "32-बिट को प्राथमिकता दें" सक्षम किया था; इसे बंद करने से समस्या ठीक हो गई।
रोमन स्टार्कोव

4

मैंने डिबग के लिए निर्धारित परियोजना के साथ तैनाती करते समय एक ही त्रुटि का अनुभव किया है। जब इसे वापस रिलीज़ में बदल दिया गया तो कोई त्रुटि नहीं थी।


4

मैं वास्तव में एक ही मुद्दा था। मैं निर्भरता को दूर नहीं कर सकता था क्योंकि यह मुख्य परियोजना द्वारा आवश्यक था। दूसरा प्रोजेक्ट कंसोल प्रोजेक्ट था।

मैं क्लास लाइब्रेरी में बदल गया , और फिर यह सब काम किया।


इस टिप्पणी से मेरी समस्या ठीक हो गई। धन्यवाद!
कासौट

2

खराब ऐप के प्रदर्शन के साथ निर्भरता के मामले में एक और बदलाव, (एनगेट पैकेज से आने वाला) नहीं बदला जा सकता है। द्विआधारी को डमी एक्सटेंशन के साथ सामग्री के रूप में शामिल किया जा सकता है, इसलिए क्लिकऑन प्रकट होने की पुष्टि करने की कोशिश नहीं करता है और फिर ऐप स्टार्टअप के दौरान इसका नाम बदल दिया जाता है।

csproj:

  <Content Include="..\packages\<package>\lib\<app>.exe">
    <Link><app>.exe.bin</Link>
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  </Content>
  <ItemGroup>
    <PublishFile Include="<app>">
      <Visible>False</Visible>
      <Group>
      </Group>
      <TargetPath>
      </TargetPath>
      <PublishState>Exclude</PublishState>
      <IncludeHash>True</IncludeHash>
      <FileType>Assembly</FileType>
    </PublishFile>
  </ItemGroup>

App.xaml.cs:

public partial class App : Application
{
    private void Application_Startup(object sender, StartupEventArgs e)
    {
        var appDir = Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName);
        if (!File.Exists($"{appDir}\\<app>.exe"))
        {
            File.Copy($"{appDir}\\<app>.exe.bin", $"{appDir}\\<app>.exe");
        }
    }
}

1

मेरे पास एक ही मुद्दा था, और मैंने यहां सभी पिछले सुझाए गए समाधानों की कोशिश की, और उन सभी ने काम नहीं किया।

मैंने इसे अद्यतन स्थान बदलकर ठीक किया। परियोजना के गुणों से -> प्रकाशित -> अपडेट । अद्यतन स्थान को अपने प्रकाशित फ़ोल्डर में बदलें।


1

ALSO पर क्लिक करें .exe कॉलिंग .exe कॉलिंग .exe के लिए SOLVED

दृश्य स्टूडियो 2010 में VB.NET का उपयोग करते हुए मुझे भी यह समस्या थी।

मेरे पास क्लिकऑन विंडोज फॉर्म एप्लिकेशन है जो एक दूसरे विंडोज फॉर्म एप्लीकेशन का संदर्भ देता है जो बदले में एक तीसरा विंडोज फॉर्म एप्लीकेशन है। (ये दूसरे और तीसरे आवेदन EXE हैं सादगी के लिए DLL फ़ाइल के बजाय फाइलें , क्योंकि वे समान रूप से स्टैंड-अलोन चलाने की संभावना रखते हैं या उन्हें पारित गुणों के साथ कहा जाता है।)

मुझे बीओटीएच को प्रति सेकंड दूसरी और तीसरी एप्लिकेशन की सामग्री प्रकट करनी थी :

वॉकथ्रू: मैन्युअल रूप से एक क्लिकऑन एप्लिकेशन को तैनात करना

यह पूरी तरह से काम करता है।


1

यदि आपके पास एक मुख्य कार्यक्रम है जो किसी अन्य का संदर्भ देता है तो आपको मुख्य कार्यक्रम के कार्यक्रम पर "एक आवेदन बनाएं बिना एक प्रकट हुए" ट्रिक करना होगा:

परियोजना -> गुण -> अनुप्रयोग टैब -> संसाधन -> प्रकट -> ड्रॉप डाउन "एक प्रकट के बिना आवेदन बनाएँ"

और फिर संदर्भित प्रोग्राम के प्रोजेक्ट गुण पर स्विच करें और प्रक्रिया को दोहराएं।


0

मैं विंडोज 7 पर विजुअल स्टूडियो 2012 का उपयोग कर रहा हूं और दो परियोजनाओं से मिलकर एक समाधान प्रकाशित करने की आवश्यकता है।

जैसा कि एडुआर्डो ने बताया, ClickOnce के रूप में दोनों परियोजनाओं को चिह्नित करना और पूर्ण विश्वास एप्लिकेशन को सक्षम करना समस्या का समाधान करता है।


0

मेरे पास एक अलग समस्या थी जिसे मैं हल करने में सक्षम था और इसलिए मैं पोस्ट करना चाहता था। मेरा मुद्दा यह था कि मैं टीएफएस से 3 शाखाएँ चला रहा था। मैंने अपनी एक शाखा में टेलरिक नियंत्रणों को अपग्रेड किया था लेकिन दूसरों को नहीं। एक बार जब मैंने सभी 3 शाखाओं में टेलरिक नियंत्रण को अपग्रेड किया और इसे फिर से प्रकाशित किया और यह त्रुटि दूर हो गई।

मैं उस समय VS2015 चला रहा था।


0

यह दिलचस्प है। मैं सिर्फ आवेदन और समस्या का निवारण करता हूं। हो सकता है कि नेटवर्क के कारण एक फ़ाइल भ्रष्टाचार।


0

मैं mage.exeअपनी अभिव्यक्ति उत्पन्न करने के लिए उपयोग करता हूं। इसे मेरे .csprojतय मुद्दे से जोड़ना । आप -nowin32manifest कंपाइलर ध्वज को भी आज़मा सकते हैं ; मैंने इसका परीक्षण नहीं किया है। मैं दृश्य स्टूडियो 2017 में स्टुअर्टड की "एक उपस्थिति के बिना एप्लिकेशन बनाएं" नहीं देखता; मुझे लगता है कि यह वही है जो हालांकि करता है।

<PropertyGroup>
  <NoWin32Manifest>true</NoWin32Manifest>
</PropertyGroup>

मेरे पास भी यह है .csproj:

<GenerateManifests>false</GenerateManifests>

0

विजुअल स्टूडियो 2017 के मेरे संस्करण में, संस्करण 15.6.6 (लेकिन यह वहां पहले हो सकता है) मैंने पाया कि एप्लिकेशन फाइलें राइट क्लिक एक्ज प्रोजेक्ट और पब्लिश में नहीं थीं, लेकिन प्रोजेक्ट गुण प्रकाशित टैब के तहत आप जहां सेट कर सकते हैं एप्लिकेशन फ़ाइलें जिन्हें आप इंस्टॉल में रखना चाहते हैं।

तो जो समस्या है उसे बाहर निकालो। यदि कंप्यूटर पर कुछ पहले से इंस्टॉल है जहां यह ऐप इंस्टॉल किया जाएगा, तो इसे फिर से इंस्टॉल करने का प्रयास करने का कोई कारण नहीं है, सिवाय इसके कि आपको इसे चलाने के लिए संदर्भ की आवश्यकता हो। यदि यह स्थापित करना था जो पहले से ही पीसी पर था, लेकिन एक अलग फ़ोल्डर में यह काम नहीं कर सकता है। अन्य अनुप्रयोगों या डीएल असेंबलियों को उसी स्थान पर उपयोग करना सबसे अच्छा है, जैसा कि वे पहले स्थापित थे।


0

मेरे पास कुछ मिनट पहले एक ही मुद्दा था, और नीचे वे चरण हैं जो मैंने इसे हल करने के लिए उपयोग किए थे।

चाभी

  • एक = मुख्य परियोजना (वह परियोजना जिसे आप प्रकाशित करना चाहते हैं, जैसे myProduct)
  • बी = संदर्भ परियोजना (उदाहरण के लिए MyProductSiteServer)

चेकलिस्ट

  1. गुणों पर नेविगेट करें -> अनुप्रयोग -> संसाधन -> प्रतीक और प्रकट की जाँच करें (a और b दोनों के लिए)

  2. गुणों पर नेविगेट करें -> बिल्ड: सुनिश्चित करें कि ए और बी एक ही लक्ष्य प्लेटफॉर्म पर हैं

  3. गुणों पर नेविगेट करें -> सुरक्षा और सुनिश्चित करें कि ए और बी में इन सेटिंग्स की जांच की गई है: "क्लिकऑनके सुरक्षा सेटिंग्स सक्षम करें" और "यह एक पूर्ण विश्वास एप्लिकेशन है"

  4. गुणों पर नेविगेट करें -> प्रकाशित करें: मैं आपको प्रकाशन फ़ोल्डर का पथ बदलने की सलाह देता हूं


0

मेरे वीएस 2019 आवेदन के साथ मेरे पास एक ही मुद्दा था।

मैंने बिना प्रकट हुए आवेदन बनाने की कोशिश की है, लेकिन यह काम नहीं किया।

हालाँकि निम्नलिखित में क्या काम किया गया था:

  1. बिल्ड -> पब्लिश -> एप्लिकेशन पर जाएं
  2. "असेंबली इंफॉर्मेशन" बटन पर क्लिक करें
  3. "असेंबली COM-Visible" विकल्प पर टिक करें

उम्मीद है, यह मदद करता है!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.