2015-06-29 121 views
0

我有一個控制檯應用程序,它使用OpenXml生成電子表格文檔。如何在C#控制檯應用程序中使用IsolatedStorage

我想使用IsolatedStorage如下圖所示的代碼,但它與一個消息示數:

無法確定呼叫者的應用程序標識?

下面是我這樣做:

var store = IsolatedStorageFile.GetUserStoreForApplication(); 

    IsolatedStorageFileStream rootFile = store.CreateFile(src); 
    store.CreateDirectory(tgt); 

     var doc = SpreadsheetDocument.Create(rootFile, SpreadsheetDocumentType.Workbook, false); 

     WorkbookPart workbookpart = doc.AddWorkbookPart(); 
     workbookpart.Workbook = new Workbook(); 

     Sheets sheets = doc.WorkbookPart.Workbook.AppendChild<Sheets>(new Sheets()); 

     return doc; 

我試圖做這樣的事情:

if (!System.ComponentModel.DesignerProperties.IsInDesignTool) 
{ 
// above code is here 
} 

但同樣是沒有定義的DesignerProperties,我想這是因爲它是一個ConsoleApp而不是一個MVC或其他基於UI的系統。

非常感謝。

+1

「只有在可以確定應用程序標識時才能使用此方法 - 例如,應用程序通過ClickOnce部署發佈或基於Silverlight的應用程序。如果嘗試在ClickOnce或Silverlight外部使用此方法,您將收到IsolatedStorageException異常,因爲調用者的應用程序標識無法確定。「從https://msdn.microsoft.com/en-us/library/system.io.isolatedstorage.isolatedstoragefile.getuserstoreforapplication(v=vs.110).aspx – tolanj

+0

也許IsolatedStorageFile.GetUserStoreForAssembly適合你 – tolanj

回答

3

這是非常簡單的。根據MSDN:

使用此方法時,與應用程序關聯的所有程序集都使用相同的獨立存儲。只有在可以確定應用程序標識時才能使用此方法 - 例如,應用程序是通過ClickOnce部署發佈還是基於Silverlight的應用程序。如果嘗試在ClickOnce或基於Silverlight的應用程序之外使用此方法,則將收到IsolatedStorageException異常,因爲無法確定調用方的應用程序標識。

不能使用GetUserStoreForApplication,因爲你的應用程序不是由它的網址定義,如與Silverlight和ClickOnce應用程序的情況。通常的控制檯應用程序沒有應用程序標識用於這種情況。來處理這個

的一種方法是通過使用不同的分離的存儲,例如:

IsolatedStorageFile.GetStore 
(
IsolatedStorageScope.User | IsolatedStorageScope.Domain | IsolatedStorageScope.Assembly, 
null, null 
); 

它有助於使用強命名程序集太 - 提供各組件的適當唯一標識。

相關問題