我有应用程序1和应用程序2. App2需要验证App1是否已安装,如果是,则需要从App1设置访问属性。
最好的方法是什么?
更新 首先,我很抱歉从不接受这个答案,我知道它现在已经超过一年了,但是在问到这个之后我立刻就立刻转向,然后项目改变了,等等等等。 Mea culpa ...
我现在重新开始,我仍然需要解决这个问题,但现在应用程序是通过ClickOnce部署的,所以我实际上并不知道它们的位置。任何建议,将不胜感激。我保证这次我会选择一个答案。
答案 0 :(得分:2)
ConfigurationManager.OpenExeConfiguration的文档有一个示例,即读取另一个exe的.config文件并访问AppSettings。这是:
// Get the application path.
string exePath = System.IO.Path.Combine(
Environment.CurrentDirectory, "ConfigurationManager.exe");
// Get the configuration file.
System.Configuration.Configuration config =
ConfigurationManager.OpenExeConfiguration(exePath);
// Get the AppSetins section.
AppSettingsSection appSettingSection = config.AppSettings;
至于检查App1是否已安装,您可以在安装过程中在注册表中写入一个值,并在App2中检查它(并在卸载期间删除该值)。
答案 1 :(得分:0)
这是一种痛苦,我可以告诉你很多。我发现执行此操作的最佳方法是序列化Settingsclass并使用XML(下面的代码)。但首先尝试此页面: http://cf-bill.blogspot.com/2007/10/visual-studio-sharing-one-file-between.html
public class Settings
{
public static string ConfigFile{get{return "Config.XML";}}
public string Property1 { get; set; }
/// <summary>
/// Saves the settings to the Xml-file
/// </summary>
public void Save()
{
XmlSerializer serializer = new XmlSerializer(typeof(Settings));
using (TextWriter reader = new StreamWriter(ConfigFile))
{
serializer.Serialize(reader, this);
}
}
/// <summary>
/// Reloads the settings from the Xml-file
/// </summary>
/// <returns>Settings loaded from file</returns>
public static Settings Load()
{
XmlSerializer serializer = new XmlSerializer(typeof(Settings));
using (TextReader reader = new StreamReader(ConfigFile))
{
return serializer.Deserialize(reader) as Settings;
}
}
}