错误-在安装C#Project.exe期间添加连接字符串

本文关键字:添加 连接 字符串 exe 安装 C#Project 错误 | 更新日期: 2023-09-27 18:24:47

我遵循了本教程http://www.codeproject.com/Tips/446121/Adding-connection-string-during-installation但是在安装时出错

错误1001无法创建ProjectName的实例。安装程序安装程序类型-->调用的目标引发异常-->对象引用未设置为对象实例。

我的Installer.cs代码:

 public Installer()
        {
            InitializeComponent();
            string dataSource = "Data Source =" + Context.Parameters["DataSource"];
            string initialcatalog = "Initial Catalog=" + Context.Parameters["InitialCatalog"];
            string userid = "User ID=" + Context.Parameters["UserID"];
            string password = "Password=" + Context.Parameters["Password"];
            dataSource = dataSource + ";" + initialcatalog;
            dataSource = dataSource + ";Persist Security Info=True;"+userid+";"+password;
            MessageBox.Show("instance=" + dataSource);
            ExeConfigurationFileMap map = new ExeConfigurationFileMap();
            MessageBox.Show(Assembly.GetExecutingAssembly().Location + ".config");
            //Getting the path location 
            string configFile = string.Concat(Assembly.GetExecutingAssembly().Location, ".config");
            map.ExeConfigFilename = configFile;
            System.Configuration.Configuration config = System.Configuration.ConfigurationManager.
            OpenMappedExeConfiguration(map, System.Configuration.ConfigurationUserLevel.None);
            string connectionsection = config.ConnectionStrings.ConnectionStrings
            ["TECHNOSOFT.Properties.Settings.Tech2014ConnectionString1"].ConnectionString;
            ConnectionStringSettings connectionstring = null;
            if (connectionsection != null)
            {
                config.ConnectionStrings.ConnectionStrings.Remove("TECHNOSOFT.Properties.Settings.Tech2014ConnectionString1");
                MessageBox.Show("removing existing Connection String");
            }
            connectionstring = new ConnectionStringSettings("TECHNOSOFT.Properties.Settings.Tech2014ConnectionString1", dataSource);
            config.ConnectionStrings.ConnectionStrings.Add(connectionstring);
            config.Save(ConfigurationSaveMode.Modified, true);
            ConfigurationManager.RefreshSection("connectionStrings");
        }

我缺了什么?帮助

错误-在安装C#Project.exe期间添加连接字符串

Context属性在构造函数内仍然为null。这就是为什么你会得到一个null异常。相反,将您的逻辑移动到Install()方法。

public override void Install(IDictionary stateSaver)
{
    // Access context and put your logic here
}