C# 如何生成项目';在VisualStudio中生成时设置设计器文件

C# 如何生成项目';在VisualStudio中生成时设置设计器文件,c#,visual-studio,mercurial,automation,C#,Visual Studio,Mercurial,Automation,我们使用一个共享Mercurial存储库,不在其中存储任何设计器文件,因为它们是自动生成的。创建新克隆时,我希望Visual Studio解决方案自动生成所有缺少的设计器文件 经过多次搜索,我还没有找到一种方法来实现这一点。我确实在生成web aspx.designer文件方面找到了一些东西,但这对C#应用程序和库项目没有帮助。我想这将是一个简单的预构建事件,但没有找到它。我正在寻找的过程是在一个新的克隆上,运行build,创建所有设计器文件,然后继续构建过程 克隆或生成时如何获取Setting

我们使用一个共享Mercurial存储库,不在其中存储任何设计器文件,因为它们是自动生成的。创建新克隆时,我希望Visual Studio解决方案自动生成所有缺少的设计器文件

经过多次搜索,我还没有找到一种方法来实现这一点。我确实在生成web aspx.designer文件方面找到了一些东西,但这对C#应用程序和库项目没有帮助。我想这将是一个简单的预构建事件,但没有找到它。我正在寻找的过程是在一个新的克隆上,运行build,创建所有设计器文件,然后继续构建过程


克隆或生成时如何获取Settings.Settings以生成Settings.Designer.cs文件?

您需要在
.resx
文件上运行
resgen

要执行所需操作,您需要编写一个脚本,在所有resx文件上运行resgen,然后将其与挂钩关联

您需要以某种方式将此钩子分发给所有开发人员


您可能会发现,在更新后钩子上运行strip比在克隆后钩子上运行strip更好。(除非你能保证没有人会再添加resx文件)。

我验证了这个文件不是在构建时生成的,而是在设计时生成的;换句话说,它是由VisualStudio而不是MSBuild生成的。您可以通过删除生成的文件并调用完全重建来进行检查

您唯一的选择是找到一种调用SettingsSingleFileGenerator类的方法,就像IDE一样,然后将这种调用打包到MSBuild任务中


老实说,我认为不值得这么做:将文件添加到源代码管理中,您已经完成了。

这看起来很有希望,但它是针对.resx文件的。具体来说,我们希望生成Settings.Settings文件的代码,即Settings.Designer.cs。要创建Settings.Designer.cs,需要通过某些接口调用COM组件,遗憾的是,没有指定:对于任何设计师,我都会指定默认情况下在Visual Studio中可用的,而不是第三方附加组件。答案没有用处。我需要在生成时重新生成此文件。如果设计器文件包含连接字符串之类的敏感信息,该怎么办?这是一个不同的主题,与OP不同,有许多方法可以管理配置数据,例如。