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

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

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

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

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

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

textBox.Text = Resources.MyConfigValue; 

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

HTH。

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

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

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

由于几乎每个人都这样做,你的代码对其他人来说看起来并不“不整洁”。 相反,如果没有看到配置文件,那将是令人困惑的。

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

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

在考虑了这些评论和其他搜索中的内容之后,我决定处理我希望将我的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文件中找到的字符串相同的字符串。 我只需要替换"e; 有实际报价。

然后,每当我想在Dim db As New MyEFDataContainer使用MyEFDataContainer Dim db As New MyEFDataContainer我只会使用Dim db As New MyEFDataContainerLocal