Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Problemi Build Progetto
Forum - C# / VB.NET - Problemi Build Progetto

Avatar
wolfensborg (Normal User)
Newbie


Messaggi: 1
Iscritto: 22/05/2011

Segnala al moderatore
Postato alle 22:47
Domenica, 22/05/2011
Salve, è il mio primo messaggio nel forum chiedo scusa per la lunghezza ma ho preferito postare in toto gli errori.

Sto realizzando un progetto per il controllo di un tabellone via RS232 ho deciso di salvare la configurazione in un file chiamato Config.XML messo in my.resources

Codice sorgente - presumibilmente Plain Text

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Configurazione>
  3.   <PortaSeriale>
  4.     <Nome>COM10</Nome>
  5.     <BaudRate>9600</BaudRate>
  6.     <DataBits>8</DataBits>
  7.     <Parità>Parity.None</Parità>
  8.     <StopBits>StopBits.One</StopBits>
  9.   </PortaSeriale>
  10.   <Display>
  11.     <Indirizzo>A</Indirizzo>
  12.     <Luminosità>0</Luminosità>
  13.   </Display>
  14. </Configurazione>



In un modulo (mdlFunctions.vb) ho messo una variabile di tipo public :
Codice sorgente - presumibilmente C# / VB.NET

  1. Public path As String = Application.StartupPath & "\data\config.xml"



Nel form Parent nell'evento load vado a caricare il file con il
Codice sorgente - presumibilmente Plain Text

  1. xmldoc.Load(path)



in fase di progettazione quando vado a cliccare su "controllo Display.application" o su Setup.exe mi da questo tipo di errore

Codice sorgente - presumibilmente Delphi

  1. System.IO.FileNotFoundException: Impossibile trovare il file 'C:\Users\Wolfen\AppData\Local\Apps\2.0\492XJK8Q.O2T\QJLO7JPW.YMB\cont..tion_2aad5a4599cffa2f_0001.0000_43f0d44388412c4e\config.xml'.
  2. Nome file: 'C:\Users\Wolfen\AppData\Local\Apps\2.0\492XJK8Q.O2T\QJLO7JPW.YMB\cont..tion_2aad5a4599cffa2f_0001.0000_43f0d44388412c4e\config.xml'
  3.    in System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
  4.    in System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
  5.    in System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize)
  6.    in System.Xml.XmlDownloadManager.GetStream(Uri uri, ICredentials credentials)
  7.    in System.Xml.XmlUrlResolver.GetEntity(Uri absoluteUri, String role, Type ofObjectToReturn)
  8.    in System.Xml.XmlTextReaderImpl.OpenUrlDelegate(Object xmlResolver)
  9.    in System.Threading.CompressedStack.runTryCode(Object userData)
  10.    in System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
  11.    in System.Threading.CompressedStack.Run(CompressedStack compressedStack, ContextCallback callback, Object state)
  12.    in System.Xml.XmlTextReaderImpl.OpenUrl()
  13.    in System.Xml.XmlTextReaderImpl.Read()
  14.    in System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhitespace)
  15.    in System.Xml.XmlDocument.Load(XmlReader reader)
  16.    in System.Xml.XmlDataDocument.Load(XmlReader reader)
  17.    in System.Xml.XmlDocument.Load(String filename)
  18.    in System.Xml.XmlDataDocument.Load(String filename)
  19.    in Controllo_Display.frmMain.frmMain_Load(Object sender, EventArgs e)
  20.    in System.EventHandler.Invoke(Object sender, EventArgs e)
  21.    in System.Windows.Forms.Form.OnLoad(EventArgs e)
  22.    in System.Windows.Forms.Form.OnCreateControl()
  23.    in System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
  24.    in System.Windows.Forms.Control.CreateControl()
  25.    in System.Windows.Forms.Control.WmShowWindow(Message& m)
  26.    in System.Windows.Forms.Control.WndProc(Message& m)
  27.    in System.Windows.Forms.ScrollableControl.WndProc(Message& m)
  28.    in System.Windows.Forms.ContainerControl.WndProc(Message& m)
  29.    in System.Windows.Forms.Form.WmShowWindow(Message& m)
  30.    in System.Windows.Forms.Form.WndProc(Message& m)
  31.    in System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
  32.    in System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
  33.    in System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
  34.  
  35.  
  36. ************** Assembly caricati **************
  37. mscorlib
  38.     Versione assembly: 2.0.0.0
  39.     Versione Win32: 2.0.50727.5444 (Win7SP1GDR.050727-5400)
  40.     Base di codice: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
  41. ----------------------------------------
  42. Controllo Display
  43.     Versione assembly: 1.0.0.0
  44.     Versione Win32: 1.0.0.0
  45.     Base di codice: file:///C:/Users/Wolfen/AppData/Local/Apps/2.0/492XJK8Q.O2T/QJLO7JPW.YMB/cont..tion_2aad5a4599cffa2f_0001.0000_43f0d44388412c4e/Controllo%20Display.exe
  46. ----------------------------------------
  47. Microsoft.VisualBasic
  48.     Versione assembly: 8.0.0.0
  49.     Versione Win32: 8.0.50727.5420 (Win7SP1.050727-5400)
  50.     Base di codice: file:///C:/Windows/assembly/GAC_MSIL/Microsoft.VisualBasic/8.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
  51. ----------------------------------------
  52. System
  53.     Versione assembly: 2.0.0.0
  54.     Versione Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
  55.     Base di codice: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
  56. ----------------------------------------
  57. System.Windows.Forms
  58.     Versione assembly: 2.0.0.0
  59.     Versione Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
  60.     Base di codice: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
  61. ----------------------------------------
  62. System.Drawing
  63.     Versione assembly: 2.0.0.0
  64.     Versione Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
  65.     Base di codice: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
  66. ----------------------------------------
  67. System.Configuration
  68.     Versione assembly: 2.0.0.0
  69.     Versione Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
  70.     Base di codice: file:///C:/Windows/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
  71. ----------------------------------------
  72. System.Xml
  73.     Versione assembly: 2.0.0.0
  74.     Versione Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
  75.     Base di codice: file:///C:/Windows/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
  76. ----------------------------------------
  77. System.Runtime.Remoting
  78.     Versione assembly: 2.0.0.0
  79.     Versione Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
  80.     Base di codice: file:///C:/Windows/assembly/GAC_MSIL/System.Runtime.Remoting/2.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll
  81. ----------------------------------------
  82. ComponentFactory.Krypton.Toolkit
  83.     Versione assembly: 4.3.2.0
  84.     Versione Win32: 4.3.2.0
  85.     Base di codice: file:///C:/Windows/assembly/GAC_MSIL/ComponentFactory.Krypton.Toolkit/4.3.2.0__a87e673e9ecb6e8e/ComponentFactory.Krypton.Toolkit.dll
  86. ----------------------------------------
  87. System.Windows.Forms.resources
  88.     Versione assembly: 2.0.0.0
  89.     Versione Win32: 2.0.50727.4927 (NetFXspW7.050727-4900)
  90.     Base di codice: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_it_b77a5c561934e089/System.Windows.Forms.resources.dll
  91. ----------------------------------------
  92. System.Data
  93.     Versione assembly: 2.0.0.0
  94.     Versione Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
  95.     Base di codice: file:///C:/Windows/assembly/GAC_32/System.Data/2.0.0.0__b77a5c561934e089/System.Data.dll
  96. ----------------------------------------
  97. mscorlib.resources
  98.     Versione assembly: 2.0.0.0
  99.     Versione Win32: 2.0.50727.5444 (Win7SP1GDR.050727-5400)
  100.     Base di codice: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
  101. ----------------------------------------



Leggendo mi dice che non trova il file config.xml quindi ho provato a creare un setup con INNO SETUP ma questi mi da una serie di errori

Codice sorgente - presumibilmente Delphi

  1. DETTAGLI ERRORI
  2.         Durante l'operazione sono stati rilevati gli errori seguenti.
  3.         * [22/05/2011 22:43:18] System.Deployment.Application.DeploymentDownloadException (Sottotipo sconosciuto)
  4.                 - Impossibile scaricare file:///d:/My Program/Application Files/Controllo Display_1_0_0_0/Controllo Display.exe.manifest.
  5.                 - Origine: System.Deployment
  6.                 - Analisi dello stack:
  7.                         in System.Deployment.Application.SystemNetDownloader.DownloadSingleFile(DownloadQueueItem next)
  8.                         in System.Deployment.Application.SystemNetDownloader.DownloadAllFiles()
  9.                         in System.Deployment.Application.FileDownloader.Download(SubscriptionState subState)
  10.                         in System.Deployment.Application.DownloadManager.DownloadManifestAsRawFile(Uri& sourceUri, String targetPath, IDownloadNotification notification, DownloadOptions options, ServerInformation& serverInformation)
  11.                         in System.Deployment.Application.DownloadManager.DownloadApplicationManifest(AssemblyManifest deploymentManifest, String targetDir, Uri deploymentUri, IDownloadNotification notification, DownloadOptions options, Uri& appSourceUri, String& appManifestPath)
  12.                         in System.Deployment.Application.DownloadManager.DownloadApplicationManifest(AssemblyManifest deploymentManifest, String targetDir, Uri deploymentUri, Uri& appSourceUri, String& appManifestPath)
  13.                         in System.Deployment.Application.ApplicationActivator.DownloadApplication(SubscriptionState subState, ActivationDescription actDesc, Int64 transactionId, TempDirectory& downloadTemp)
  14.                         in System.Deployment.Application.ApplicationActivator.InstallApplication(SubscriptionState& subState, ActivationDescription actDesc)
  15.                         in System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl)
  16.                         in System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(Object state)
  17.                 --- Eccezione interna ---
  18.                 System.Net.WebException
  19.                 - Impossibile trovare una parte del percorso 'd:\My Program\Application Files\Controllo Display_1_0_0_0\Controllo Display.exe.manifest'.
  20.                 - Origine: System
  21.                 - Analisi dello stack:
  22.                         in System.Net.FileWebRequest.EndGetResponse(IAsyncResult asyncResult)
  23.                         in System.Net.FileWebRequest.GetResponse()
  24.                         in System.Deployment.Application.SystemNetDownloader.DownloadSingleFile(DownloadQueueItem next)
  25.                 --- Eccezione interna ---
  26.                 System.Net.WebException
  27.                 - Impossibile trovare una parte del percorso 'd:\My Program\Application Files\Controllo Display_1_0_0_0\Controllo Display.exe.manifest'.
  28.                 - Origine: System
  29.                 - Analisi dello stack:
  30.                         in System.Net.FileWebResponse..ctor(FileWebRequest request, Uri uri, FileAccess access, Boolean asyncHint)
  31.                         in System.Net.FileWebRequest.GetResponseCallback(Object state)
  32.                 --- Eccezione interna ---
  33.                 System.IO.DirectoryNotFoundException
  34.                 - Impossibile trovare una parte del percorso 'd:\My Program\Application Files\Controllo Display_1_0_0_0\Controllo Display.exe.manifest'.
  35.                 - Origine: mscorlib
  36.                 - Analisi dello stack:
  37.                         in System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
  38.                         in System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath)
  39.                         in System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy)
  40.                         in System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean useAsync)
  41.                         in System.Net.FileWebStream..ctor(FileWebRequest request, String path, FileMode mode, FileAccess access, FileShare sharing, Int32 length, Boolean async)
  42.                         in System.Net.FileWebResponse..ctor(FileWebRequest request, Uri uri, FileAccess access, Boolean asyncHint)



Penso di essere io che non ho capito come funziona il build..


-- Aggiornamento 23/05 ---- (lo faccio qui perchè non so come rispondere visto che mi mancava il tasto Rispondi)

Sono riuscito a fare il setup copiando i files presenti nella cartella RELEASE ma quando vado ad aprire il programma mi da ACCESSO NEGATO al file Config.XML.

Poi ho visto che mi da mancante il componente KryptonToolkit (di cui utilizzo alcuni componenti free), come faccio a fargli controllare la presenza e nel caso ad installarlo come fa il Publish di VS2010

---- Grazie Daniele ----

Ultima modifica effettuata da wolfensborg il 23/05/2011 alle 13:37
PM
Avatar
R0gerBlack (Member)
Expert


Messaggi: 210
Iscritto: 10/06/2010

Up
1
Down
V
Segnala al moderatore
Postato alle 15:08
Lunedì, 23/05/2011
è vero che bisogna postare gli errori ma non in questo senso.. :-| ad ogni modo da quel che ho capito è che non trova il file config.xml

Tu hai scritto come riga di codice:

Codice sorgente - presumibilmente C# / VB.NET

  1. Public path As String = Application.StartupPath & "\data\config.xml"



Allora, innanzitutto ti consiglio di togliere Application.StartupPath perché non serve per questo genere di cose:
1. La Directory del programma è la sua directory di base, ad eccezione di operazioni particolari (tipo individuare la locazione del programma) non serve, cioè il programma per operare nella sua cartella basta che usa la directory di base ovvero niente, non so se mi spiego: Se nella cartella supponiamo che c'è l'eseguibile e un file ciao.txt, il programma basta che avrà la stringa "ciao.txt" e non Application.StartupPath..
2. La Directory di base, essendo locale Windows riconosce che il programma opera nel suo interno e che quindi non può arrecare danno a meno che a se stesso; invece se tu usi tutta la Directory, potresti benissimo star danneggiando file del computer che non ti riguardano (anche se in questo caso no), quindi per certe operazioni serviranno i requisiti di amministratore.

Anche se penso che il problema che non ti abbia fatto funzionare tutto sia il \ prima della cartella a prescindere da che modo hai ottenuto la directory, ovvero quando tu usi la directory di base o intera del programma, questa directory termina già con \ e quindi tu accavalleresti la directory (Debug\\data\..), questo vale anche se tu vuoi usare quella Directory da programmi esterni

Un altro consiglio che ti do prima di concludere è di gestire l'errore: L'overflow viene dato quando l'errore non è gestito, se tu lo gestisci il programma sa di che errore stai parlando e lo mostrerà all'utente

Ecco come potresti risolvere
Codice sorgente - presumibilmente Delphi

  1. Public path As String = "data\config.xml"
  2. 'Se devi usare il path anche da programmi esterni usa
  3. 'Public path As String = Application.StartupPath & "data\config.xml"


Codice sorgente - presumibilmente VB.NET

  1. Try
  2.             Xmldoc.loadfile(path)
  3.         Catch ex As Exception
  4.             'Errore generico, puoi approfondirlo con i vari Exception
  5.             MsgBox("C'è stato un errore nella lettura del file", MsgBoxStyle.Critical)
  6.         End Try



Fatto questo il file dovrebbe essere letto con la giusta directory, i giusti permessi di modifica e nel caso che non venga letto ti verrà mostrata la MsgBox

Ultima modifica effettuata da R0gerBlack il 23/05/2011 alle 17:41
PM