2014-01-16 122 views
0

我在C#2個控制檯應用程序:應用1應用2與設置屬性訪問設置爲public,我遵循的一些說明:共享設置從控制檯程序

1 .-我設置屬性設置應用2「名稱'from App1

App2.Properties.Settings.Default.Name = "John" 

2.-我運行App1並按預期打印我們的App2.Name屬性設置。

App2.Properties.Settings.Default.Name 

3.-我運行App2,測試屬性是否從App1保存。 它不顯示屬性值:約翰

Properties.Settings.Default.Name 

問:

  • 爲什麼財產被保存correcty和應用1範圍顯示,但是當我運行應用2(已經聲明過的屬性名稱) 纔不是?

  • 如果我的方法無效;我可以從外部控制檯應用程序設置設置屬性嗎?

+0

我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –

+0

每個應用程序都有它的加載其設置的唯一配置文件。把它放在一個不會在另一箇中設置。他們有幾種解決方法,可以手動加載配置文件並進行更改,也可以查看其他任何方式在兩個應用程序之間共享數據。 –

回答

0

而不是引用2控制檯應用程序,你也可以使用一些XML操作:

using System.Linq; 
using System.Xml.Linq; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
    static void Main(string[] args) 
    { 
     var file = @"C:\ConsoleApplication2\bin\Debug\ConsoleApplication2.exe.config"; 

     var doc = XDocument.Load(file); 

     var desc = doc.Root.Descendants("setting") 
      .Where(s => s.Attributes() 
       .Any(y => y.Value == "Name")).Descendants("value"); 

     desc.First().Value = "NewName"; 

     doc.Save(file); 
    } 
} 

}

在這個片段的路徑,配置文件是硬連接。您也可以使用註冊表,另一個文件在哪裏App2說它的設置文件是什麼或共享一個字符串。

+0

在ConsoleApplication2.exe.config中,標記「value」的值在保存後爲空。 「 – kmxillo

+0

.exe.config文件已部署,具體取決於 .settings文件的內容如果您在App1內進行了操作後編譯App2,你可以編譯這兩個文件,運行App1,然後直接從.exe運行App2,在這種情況下,這些更改不會被覆蓋,你的目標是什麼?也許還有其他方法可以做到這一點。 – csteinmueller

相關問題