2009-02-25 121 views
2

我有一個使用ClickOnce部署的WinForms應用程序。在應用程序項目中,我在「發佈」設置的「應用程序文件」對話框中將一些標記爲內容的文件標記爲「數據文件」。我還有一些標記爲「包含自動」的內容文件。未使用ClickOnce應用程序部署數據文件

當我發佈時,安裝應用程序,然後在啓動時立即使用DirectoryNotFoundException(下面的完整堆棧跟蹤)執行崩潰。

調查應用程序文件夾我可以找到所有標記爲「包括自動」的文件,整齊地放置在可執行文件中。雖然沒有安裝標記爲「數據文件」的文件(我已經檢查了可執行文件夾和數據文件夾)。

請注意,發佈和安裝都是從本地計算機上的文件夾完成的,而不是通過網站完成的。

如果我從「數據文件」更改爲所有內容文件的標準包含,則所有內容都可以作爲魅力使用。

我正在運行(喘氣)Windows XP SP3和.Net 3.5 SP1。

System.IO.DirectoryNotFoundException了未處理 消息= 「系統無法找到指定的路徑(從HRESULT異常:0x80070003)。」 源= 「mscorlib程序」 堆棧跟蹤: 在System.Deployment.Internal.Isolation。 IActContext.SetApplicationRunningState(UInt32的dwFlags中,UInt32的ulState,UInt32的& ulDisposition) 在System.ActivationContext.SetApplicationState(ApplicationState多個) 在System.AppDomain.SetupDomainForApplication(ActivationContext activationContext,字符串[] activationData) 在System.AppDomain.SetupApplicationHelper(證據providedSecurityInfo,證據創建者SecurityInfo,ApplicationIdentity appIdentity, ActivationContext activationContext,String [] activationData) at System.AppDomain.SetDomainManager(Evidence providedSecurityInfo,Evidence creatorsSecurityInfo,IntPtr parentSecurityDescriptor,Boolean publishAppDomain) at System.AppDomain.SetDefaultDomainManager(String fullName,String [] manifestPaths,String [] activationData) InnerException:

回答

3

經過一些更多的試驗和錯誤後,我發現DirectoryNotFound異常發生在我的數據文件位於子文件夾的子文件夾中時。如果數據文件位於項目根目錄或第一級子文件夾中,則所有內容均按預期工作。

這個問題似乎也與這樣的事實有關,在這些子文件夾中的某些文件夾中,我將一些文件標記爲包含,一些標記爲數據。這可能會導致數據文件未部署的部署過程中出現混亂。

最後,我需要做的事情是按照我想要的方式來卸載以前版本的應用程序。其次,組織像這樣的項目我的數據文件:

 
\Testfiles\Filegroup1\data1.txt 
\Testfiles\Filegroup1\data2.txt 
\Testfiles\Filegroup2\moredata1.txt 
\Testfiles\Filegroup2\moredata2.txt 

然後我標記每個文件夾中的數據中的所有文件。現在所有的東西都被部署得很好,並且在啓動時加載器不會崩潰。

+0

今天這樣做對我有效。將生成操作設置爲「內容」和「複製到輸出目錄」以「始終複製」。 – MansoorShaikh 2014-05-28 12:01:50

相關問題