如何防止 Visual Studio 将生成的文件添加到源代码管理
这是我的具体场景:使用 VS2010、Pex 和 TFS2008,生成的moles 文件会自动添加到源代码管理(TFS)中。
Pex 将“project_name.moles”文件添加到您的测试项目中,然后在构建时自动生成 3 个文件:project_name.Designer.cs、project_name.Moles.dll 和 project_name.Moles.xml。我想将 *.moles 文件保留在 TFS 中(它是源代码),但我不希望 3 个生成的文件位于 TFS 中(它们仍然是项目的一部分,但它们是在新系统上首次构建时生成的) )。
我需要这种行为有两个原因: 1. 将生成的代码存储在源代码管理中并不是一个好主意(我们不在这里争论它的优点)。 2. 特别地,DLL 文件是坏的,因为每次有人构建时,所有的摩尔文件都会重新生成,因此所有文件都会被检出,并且 DLL 文件会被独占检出(不可合并),因此其他人不能再在其上构建他们当地的盒子。
Pex/Moles 团队正在致力于 但解决方案可能还需要几个月的时间。
是否有一个 csproj 属性可以分配给这些项目文件,以便它们位于项目中但不受版本控制管理?我不介意手动编辑 csproj 文件。
Here's my specific scenario: Using VS2010, Pex and TFS2008, generated moles files are getting automatically added to source-control (TFS).
Pex adds a "project_name.moles" file to your test project and then autogenerates 3 files at build time: project_name.Designer.cs, project_name.Moles.dll, and project_name.Moles.xml. I want to keep the *.moles files in TFS (it's source code) but I don't want the 3 generated files to be in TFS (they are still part of the project, but they are generated when first built on a new system).
There are two reasons I need this behavior:
1. It's not a good idea to store generated code in source-control (let's not debate the merits of that here).
2. Specially, the DLL file is BAD because every time someone builds, all moles files are regenerated and thus all files are checked-out and DLL files are checked-out EXCLUSIVELY (non-mergable) and so other people can no longer build on their local box.
The Pex/Moles team are working on this but the solution is still likely several months away.
Is there a csproj property that can be assigned to these project files so that they are in the project but not managed by version control? I don't mind hand-editing the csproj file.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Moles 在下一版本 (v0.94) 中不会向项目添加任何文件。它将使用 MSBuild 按需生成程序集。
Moles will not be adding any files to the project in the next version (v0.94). It will use MSBuild to generate the assemblies on demand.
我认为它更多地取决于版本控制工具而不是 Visual Studio,因为通常您可以在版本控制配置中设置某种过滤器以排除某些文件/路径。
例如,如果您使用 Mercurial/Hg,您可以(并且应该)编辑存储库
.hgignore
文件并指定例如排除所有*.moles
文件和整个子树MolesAssemblies\*
。我想其他版本控制系统也有类似的选项。I think it depends more on the version control tool than Visual Studio, as usually you can set up some kind of filters in your version control configuration in order to exclude some files/paths.
E.g. if you use Mercurial/Hg, you can (and should) edit your repository
.hgignore
file and specify e.g. to exclude all*.moles
files and the whole sub-treeMolesAssemblies\*
. I guess other version control systems have similar options.