void tsbExportToCSProject_Click(object sender, EventArgs e) { if (document == null) { return; } SaveFileDialog sfd = new SaveFileDialog(); sfd.Title = "保存C#项目"; sfd.Filter = "C# 项目文件(*.csproj)|*.csproj"; if (sfd.ShowDialog(this) == DialogResult.OK) { try { document.SaveAsCsProject(sfd.FileName); } catch (Exception ex) { MessageBox.Show(this, "保存失败," + ex.Message, "提示"); return; } } }
void Publish(BackgroundWorker bw, string settingsFile) { ClickOnceConfigFile config = new ClickOnceConfigFile(settingsFile); string publishPath = config.PropertyItems.PublishUrl; bw.ReportProgress(5, "初始化临时目录..."); string templatePath = Properties.Settings.Default.TemplatePath; string projectPath = Path.Combine(publishPath, Guid.NewGuid().ToString("N").ToLower()); if (!Directory.Exists(projectPath)) { Directory.CreateDirectory(projectPath); } bw.ReportProgress(5, "生成C#项目..."); string projectFile = Path.Combine(projectPath, "loader.csproj"); config.SaveAsCsProject(projectFile); bw.ReportProgress(5, string.Format("正在编译{0}...", projectFile)); CmdMSBuild(projectFile); //复制 bw.ReportProgress(5, string.Format("复制到{0}...", publishPath)); string appPublish = Path.Combine(projectPath, @"bin\Release\app.publish"); if (Directory.Exists(appPublish)) { Common.MoveDirectory(appPublish, publishPath, null); } bw.ReportProgress(5, string.Format("清理临时目录{0}...", publishPath)); Directory.Delete(projectPath, true); bw.ReportProgress(100, "操作完成。"); }
/// <summary> /// 按配置生成保存为C#项目。 /// </summary> /// <param name="filename"></param> public static void SaveAsCsProject(string configFile, string projectFile) { ClickOnceConfigFile config = new ClickOnceConfigFile(configFile); config.SaveAsCsProject(projectFile); }