我正在使用“应用程序设置”(作为Visual Studio的一部分),但似乎无法使用原始应用程序中的设置来获取其他应用程序。

有人可以帮助在.net c#中的两个应用之间存储一些字符串变量吗?

编辑:似乎我需要从第二个应用程序添加对我的第一个应用程序的引用才能访问Properties.Default设置-我该怎么做?

===============>>#1 票数:3 已采纳

如果要在项目之间共享配置,则可以仅从其他项目中添加文件'as a link' :右键单击项目>>选择'Add existing file' >>导航至app.config文件>>单击add按钮旁边的下拉菜单,然后选择add as a link

要么

如果您想在两个应用程序之间共享配置,这就是方法

我将有一个共享程序集,其中包含您的设置类。 然后,您可以将该类序列化/反序列化到硬盘驱动器上的某个普通位置:

[XmlRoot()]
public class Settings
{
    private static Settings instance = new Settings();

    private Settings() {}

    /// <summary>
    /// Access the Singleton instance
    /// </summary>
    [XmlElement]
    public static Settings Instance
    {
        get
        {
            return instance;
        }
    }

    /// <summary>
    /// Gets or sets the height.
    /// </summary>
    /// <value>The height.</value>
    [XmlAttribute]
    public int Height { get; set; }

    /// <summary>
    /// Main window status (Maximized or not)
    /// </summary>
    [XmlAttribute]
    public FormWindowState WindowState
    {
        get;
        set;
    }

    /// <summary>
    /// Gets or sets a value indicating whether this <see cref="Settings"/> is offline.
    /// </summary>
    /// <value><c>true</c> if offline; otherwise, <c>false</c>.</value>
    [XmlAttribute]
    public bool IsSomething
    {
        get;
        set;
    }

    /// <summary>
    /// Save setting into file
    /// </summary>
    public static void Serialize()
    {
        // Create the directory
        if (!Directory.Exists(AppTmpFolder))
        {
            Directory.CreateDirectory(AppTmpFolder);
        }

        using (TextWriter writer = new StreamWriter(SettingsFilePath))
        {
            XmlSerializer serializer = new XmlSerializer(typeof(Settings));
            serializer.Serialize(writer, Settings.Instance);
        }
    }

    /// <summary>
    /// Load setting from file
    /// </summary>
    public static void Deserialize()
    {
        if (!File.Exists(SettingsFilePath))
        {
            // Can't find saved settings, using default vales
            SetDefaults();
            return;
        }
        try
        {
            using (XmlReader reader = XmlReader.Create(SettingsFilePath))
            {
                XmlSerializer serializer = new XmlSerializer(typeof(Settings));
                if (serializer.CanDeserialize(reader))
                {
                    Settings.instance = serializer.Deserialize(reader) as Settings;
                }
            }
        }
        catch (System.Exception)
        {
            // Failed to load some data, leave the settings to default
            SetDefaults();
        }
    }
}

您的xml文件将如下所示:

<?xml version="1.0" encoding="utf-8"?>
<Settings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Height="738" WindowState="Maximized" IsSomething="false" >
</Settings>

===============>>#2 票数:2

如果您希望同一用户对两个应用程序使用相同的设置,或者希望所有用户共享相同的设置,除了标准的应用程序设置外,您还有其他选择:

1)将数据存储在注册表中。 您可以将设置设为用户特定的或全局的。

2)将包含设置的结构化文件(例如XML文件)存储在以下标准目录之一中:所有用户的Environment.SpecialFolder.CommonApplicationData或单个用户的Environment.SpecialFolder.ApplicationData。 这就是我要使用的方法。

  ask by Marcus translate from so

未解决问题?本站智能推荐:

1回复

如何为控制台应用程序编写配置应用程序 - 共享数据?

我的控制台应用程序使用用户输入的一串字符串变量。 目前,用户可以将这些作为参数键入控制台应用程序,然后使用Properties.Settings将其保留。 相反,我想要一个GUI应用程序,它有一堆文本框和一个“保存”按钮。 我怎样才能做到这一点? 我认为每个应用程序都需要有一种方
1回复

在许多应用程序之间共享连接

我正在使用C#和.NET Framework 4.7开发解决方案。 该解决方案具有ASP.NET Web MVC应用程序和Windows服务。 两者都连接到同一个数据库,现在我正在使用他们的配置文件进行存储。 有没有其他方法来存储两个应用程序都可以使用它的连接字符串? 我不想
2回复

在应用程序间共享设置

我有多个.NET程序集,它们都需要共享常用的用户设置,例如首选项,用户名等。一个是WPF应用程序,另一个是控制台应用程序,第三个是Office加载项。 所有这些设置都是用户范围。 只有WPF应用程序需要能够更改设置。 其余的只是阅读它们。 理想情况下,我想使用.NET配置框架。
2回复

要安装和配置控制台应用程序的单独程序?

我有一个简单的控制台应用程序,客户端将安装在服务器上,该服务器将数据发送到我们的API。 他们需要输入我们的API的用户名/密码,程序会记住此名称,并在使用日常计划任务运行应用程序时使用它。 如何创建GUI,以使最终用户输入控制台应用程序可以读取的用户名/密码(对于我们的API)? 由
2回复

.NET Settings.Reload()和Settings.Save()设置无法加载

我有一个奇怪的问题,我无法弄清楚。 我有一个继承ApplicationSettingsBase的自定义设置类。 它具有用户范围设置,如下所示。 我有两个表单,一个主窗体和一个设置窗体,可以在其中更改应用程序设置。 当我创建SettingsForm并更改AccountList设置值时
7回复

为什么将.net配置设置编译成程序集?

我一直在尝试阅读如何在.net中正确配置,并遇到一些我觉得有点奇怪的事情,那就是配置设置通过Settings类编译成程序集。 删除app.config并运行应用程序不会像我期望的那样导致配置错误,而是现在我无法替换配置值。 在我的应用程序中,我有一个webservice url的配置设置
11回复

.NET 3.5 - 配置系统无法初始化异常

在我的winform应用程序中,我正在尝试添加userSetting,尽管appSettings也出现了错误。 当添加设置时,我得到一个抛出的异常,说:“配置系统无法初始化”,内部异常“无法识别的配置部分userSetting” 例外细节:
1回复

如何在.NET的app.config中进行分层配置

app.config配置部分很不错,但我经常需要多个配置集,但差别很小。 我想要的是: 有一个部分具有默认配置(这个部分是使用设计器创建的,因此在Settings类中具有自动生成的强类型访问器 另一个只包含“新”项的部分,以及所有其他项从原始部分获取其值。 (注意 -
9回复

如何编辑应用程序配置设置? App.config最好的方法去?

对于我的项目,我有通过项目属性中的“设置”添加的设置。 我很快发现直接编辑app.config文件似乎没有真正更新设置值。 似乎我在进行更改然后重新编译时必须查看项目属性。 我想知道......处理项目的可自定义设置的最佳和最简单的方法是什么 - 认为这对于.Net如何处理它是
1回复

在应用程序设置,数字/字符串表示形式或对象中存储什么?

我一直在考虑在“项目设置”中存储什么,对象或这些对象的数字/字符串表示形式以设置规则,并避免以后再考虑这一点,因此,我想采用最佳方法。 一方面,存储对象表示会授予您存储的内容有效,并且使您无需在每次访问它们时进行转换。 您只需要带有属性的对象。 另一方面,存储对象的数字/字符串表示