你如何在C#项目中嵌入app.config?

时间:2009-12-04 13:34:08

标签: c#

编译C#项目时,app.config中的应用程序设置与exe文件一起保存。例如,如果程序名称为“solve_np.exe”,则旁边会出现“solve_np.exe.config”,使其看起来不像我想要的那样整洁。你怎么能把它嵌入.exe?

我尝试将Build Action设置为Embed Resource,但这并没有成功。

6 个答案:

答案 0 :(得分:10)

啊哈。我猜你是否会因为Visual Studio自动将内容放入最终用户不希望配置的配置中而犯规。

在这种情况下使用资源。只需添加.resx类型的新文件即可。有了这个,你就可以将诸如字符串和图像之类的东西添加到资源文件中。构建它之后,它应该提供对资源的静态访问(它通常为您生成资源的代码文件,因此您不必自己访问ResourceManager。)

E.G。如果我在构建后使用名为MyConfigValue的字符串创建了resources.resx,我应该能够访问它:

textBox.Text = Resources.MyConfigValue;

如果你想要的是有点变量但不应该是可配置的值,那么这是放置它们的正确位置。

HTH。

答案 1 :(得分:6)

unprofessional 将app.config文件与您的exe一起发送。我认为你可能要找的是不整洁。我个人并不认为这是我自己的情况然而每个人都不同!也许您可以简单地隐藏app.config文件?

或者另一种方法是创建您自己的配置文件,您可以将其保存到App Data文件夹,甚至将设置存储在注册表中。

答案 2 :(得分:4)

这是另一个需要考虑的因素。经验丰富的.Net开发人员习惯于标准的应用程序设计,它在Web应用程序和桌面应用程序中都使用配置文件。如果您偏离这种做法,那么任何关注您的开发人员都会更难理解您的所作所为。即使没有配置文件,Web服务器上的sa也可能会感到困惑。

由于几乎所有人都是这样做的,因此您的代码对其他人来说看起来并不“不整洁”。相反,如果看不到预期的配置文件,那就太麻烦了。

答案 3 :(得分:2)

通常,配置文件的理论是,它存储了您在部署应用程序后可能要更改的设置(用于用户首选项等)。为此,您需要存储应用程序外部的某个位置。如果使用默认设置,则会显示“[Your] .exe.config”。您可以查看许多其他选项,但如果您提供了一种可以保存某种设置的机制,那么几乎每一个选项都会在某处写入文件。

答案 4 :(得分:0)

我同意serhio darasd和Quibblesome,但你可以删除“solve_np.exe.config”,它只会使用默认配置。

答案 5 :(得分:0)

在考虑了这些评论和其他搜索中的内容后,我决定最好的方法来处理我想要将我的Entity Framework连接字符串嵌入到我的可执行文件而不需要MyApplication.exe.config文件的问题部署的解决方案是创建一个类似的派生类:

Public Class MyEFDataContainerLocal
   Inherits MyEFDataContainer

    Public Sub New()
        MyBase.New(My.Settings.MyEFContainerConnectionString)
    End Sub
End Class

我刚刚创建了一个类型为Connection String的应用程序设置,其中包含与App.Config文件中找到的字符串相同的字符串。我只需要用实际引号替换&quote;

然后,只要我想在Dim db As New MyEFDataContainer中使用MyEFDataContainer,我就会使用Dim db As New MyEFDataContainerLocal代替。