none
problema con clickonce RRS feed

  • Domanda

  • Salve,

     ho sviluppato un'applicazione ed ho deciso di distribuirla nella mia rete aziendale attraverso la tecnologia clickonce.

    Il mio progetto utilizza la libreria gsdll32.dll (ghostscript) che non è possibile aggiungere come riferimento al progetto, ho pensato quindi di inserirla come dipendenza esterna al progetto ed vorrei distribuirla in una cartella separata sul client (lib). Ho letto che per renderla disponibile all'applicazione devo includere le seguenti info nel file app.config:

    <configuration>

      <runtime>

        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">

          <probing privatePath="PercorsoDLL"/>

        </assemblyBinding>

      </runtime>

    </configuration>

    ora il problema è che anche solamente aggiungendo il tag <runtime> l'applicazione mi fornisce delle exception nel caricamento (MySql.Data.dll)di una classe mysql.

    dove sbaglio..

     

    grazie

    lunedì 13 dicembre 2010 14:24

Risposte

  • come posso veridicare se è imposta nella GAC? io l'ho semplicemente aggiunta come riferimento..


    Vai nel progetto, in Solution Explorer attiva la visualizzazione di tutti i file. Espandi l'elenco dei riferimenti, selezioni l'assembly in questione -> tasto dx -> proprietà, vai a vedere se Copy Local = False. In questo caso l'assembly viene "pescato" dalla GAC e quando distribuisci l'applicazione con ClickOnce, questo assume di trovarlo già sulla GAC del pc di destinazione.

    Poiché ClickOnce non può installare nella GAC, la soluzione al problema è impostare Copy Local su True. Se però Copy Local è già True, vediamo di capire meglio il problema.


    Alessandro Del Sole
    Microsoft MVP - Visual Basic: development
    http://community.visual-basic.it/alessandro/
    mercoledì 15 dicembre 2010 08:17
  • Ciao Dany,

    hai qui la descrizione dell'elemento nella libreria MSDN.

    Già provato?

    In attesa di un riscontro.

    Saluti, Daniel.


    Questo contenuto è distribuito “as is” e non implica alcuna responsabilità da parte di Microsoft. L'azienda offre questo servizio gratuitamente, allo scopo di aiutare gli utenti e farli aumentare la conoscenza sui prodotti e le tecnologie Microsoft.
    lunedì 27 dicembre 2010 15:46

Tutte le risposte

  • Non è che per caso la libreria di MySql è impostata per essere caricata dalla Global Assembly Cache?
    Alessandro Del Sole
    Microsoft MVP - Visual Basic: development
    http://community.visual-basic.it/alessandro/
    martedì 14 dicembre 2010 12:05
  • come posso veridicare se è imposta nella GAC? io l'ho semplicemente aggiunta come riferimento..

    martedì 14 dicembre 2010 12:59
  • come posso veridicare se è imposta nella GAC? io l'ho semplicemente aggiunta come riferimento..


    Vai nel progetto, in Solution Explorer attiva la visualizzazione di tutti i file. Espandi l'elenco dei riferimenti, selezioni l'assembly in questione -> tasto dx -> proprietà, vai a vedere se Copy Local = False. In questo caso l'assembly viene "pescato" dalla GAC e quando distribuisci l'applicazione con ClickOnce, questo assume di trovarlo già sulla GAC del pc di destinazione.

    Poiché ClickOnce non può installare nella GAC, la soluzione al problema è impostare Copy Local su True. Se però Copy Local è già True, vediamo di capire meglio il problema.


    Alessandro Del Sole
    Microsoft MVP - Visual Basic: development
    http://community.visual-basic.it/alessandro/
    mercoledì 15 dicembre 2010 08:17
  • grazie per la risposta Alessandro,

    in effetti il problema dell'exception era causato dall'impostazione che mi hai SEGNALATO, resta però il problema che la dll se non presente nella stessa directory di installazione continuo ad non vederla.

    <probing privatePath="PercorsoDLL"/>

    ho provato con tutti i path possibili (lib, ./lib, .;lib etc etc) senza alcun risultato..

    ti allego il file di configurazione

     

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
         <runtime>
          <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
             <probing privatePath="lib"/>
          </assemblyBinding>
       </runtime>
      <system.diagnostics>
        <sources>
          <!-- Questa sezione definisce la configurazione di registrazione per My.Application.Log -->
          <source name="DefaultSource" switchName="DefaultSwitch">
            <listeners>
              <add name="FileLog" />
              <!-- Per scrivere nel log eventi dell'applicazione, rimuovere il commento dalla sezione sottostante -->
              <!--<add name="EventLog"/>-->
            </listeners>
          </source>
        </sources>
        <switches>
          <add name="DefaultSwitch" value="Information" />
        </switches>
        <sharedListeners>
          <add name="FileLog" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" initializeData="FileLogWriter" />
          <!-- Per scrivere nel log eventi dell'applicazione, rimuovere il commento dalla sezione sottostante e sostituire APPLICATION_NAME con il nome dell'applicazione -->
          <!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> -->
        </sharedListeners>
      </system.diagnostics>
      <appSettings>
        <!-- CENTROSTAMPA-->
        <add key="SIGLA" value="TT" />
        <add key="DESCRIZIONE" value="TORONTO" />
        <!-- CONFIGURAZIONE DATABASE-->
        <add key="CONN" value="server=100.170.102.39;userid=root;password=root;database=netflow;Pooling=true;" />

        <!-- SEGNALAZIONE -->
        <add key="FILE" value="" />
        <add key="ABILITAZIONE" value="" />
        <!--PULIZIA-->
        <add key="DATA" value="16/03/2010" />
        <add key="GIORNI" value="1" />
        <!--PLATE REMAKE-->
        <add key="RIFACIMENTI" value="true" />
        <add key="SEGNALAZIONE" value="C:\Work\start.wav" />
        <add key="ClientSettingsProvider.ServiceUri" value="" />
      </appSettings>
      <system.web>
        <membership defaultProvider="ClientAuthenticationMembershipProvider">
          <providers>
            <add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" />
          </providers>
        </membership>
        <roleManager defaultProvider="ClientRoleProvider" enabled="true">
          <providers>
            <add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
          </providers>
        </roleManager>
      </system.web>
    </configuration>

    ..aggiungo  che l'applicazione viene installata in automatico sotto la directory

    C:\Documents and Settings\marco\Impostazioni locali\Apps\2.0\EBKMKNO8.HYK\BXKG3TJ7.L9E\netf..tion_390e29f1864a4cbf_0001.0000_8806973d855ab6ad

    dove la parte finale è chiaramente variabile (è corretto?).

    ancora grazie.

    mercoledì 15 dicembre 2010 12:24
  • Ciao Dany,

    hai qui la descrizione dell'elemento nella libreria MSDN.

    Già provato?

    In attesa di un riscontro.

    Saluti, Daniel.


    Questo contenuto è distribuito “as is” e non implica alcuna responsabilità da parte di Microsoft. L'azienda offre questo servizio gratuitamente, allo scopo di aiutare gli utenti e farli aumentare la conoscenza sui prodotti e le tecnologie Microsoft.
    lunedì 27 dicembre 2010 15:46