我编写了一个使用s#arp的小型控制台应用程序。我可以 使用配置管理器创建可执行文件并选择 发布。我知道dll是必需的,而且存在 显然没有简单的方法将所有内容“绑定”(?)到一个可执行文件中:
至少有一种方法可以隐藏:
NHibernate.config
这样db的连接字符串是隐藏的吗?我记得是的 可以为asp.net加密Web.config。也许类似的东西 可能的?
非常感谢任何反馈。非常感谢提前。
答案 0 :(得分:3)
您需要在代码中配置连接字符串属性才能解密,SharpArch提供以下重载,允许为您的配置添加属性:
NHibernateSession.Init(
sessionStorage,
new[] { Server.MapPath("~/bin/Suteki.TardisBank.Infrastructure.dll") },
new AutoPersistenceModelGenerator().Generate(),
Server.MapPath("~/NHibernate.config"),
// You can get all the values from your config and use here,
// if you dont want a config file at all, or just decrypt the
// connection string and provide that value dictionary:
new System.Collections.Generic.Dictionary<string, string>
{
{
NHibernate.Cfg.Environment.ConnectionString, DecryptConnectionString()
}
}, null);
解密方法DecryptConnectionString()从任何地方获取连接字符串,无论是app.config中的加密配置部分还是硬编码字符串。
正如Corbin所说,这使得普通的Joe更难以找出连接字符串,但是可以这样做,如果您要分发它,那么我会考虑不直接连接到数据库。
如果你想要一个带有dll的可执行文件,请查看ILMerge。