从源代码管理中排除嵌套项

Nei*_*ilD 6 version-control tfs t4 visual-studio-2008

我正在使用T4模板在我正在处理的项目中生成一些.config文件.

我已经设置了一个预构建任务来查找解决方案目录中的所有.tt文件,然后执行TextTransform命令行工具,以便在每个构建时新生成代码.

但是,我现在有"拒绝访问"错误,因为(例如)当它尝试在Web.UAT.tt文件上执行TextTransform时,Web.UAT.Config文件在TFS中的源代码控制下,因此写入保护.

通常我会在Visual Studio中选择.Config文件,然后执行File-> Source Control-> Exclude From Source Control.不幸的是,对于任何在另一个文件下显示为"嵌套"的文件,这似乎不是一个选项!

即我可以排除web.tt,但不能排除web.config ...我可以排除default.aspx但不能排除default.aspx.cs.

有没有人对如何从源代码管理中排除较低级别的嵌套文件有任何想法,但保持顶级的?

谢谢!

And*_*tan 2

我假设您在这里使用 TFS。

您将无法完美地完成此操作 - 因为 Visual Studio 会自动将添加到项目的任何新项目添加到源代码管理。最好的解决方案是在运行模板之前考虑使用 MSBuild 并发出输出文件的签出(但随后您可能需要再次签入)。快速浏览一下http://msbuildextensionpack.codeplex.com/,我已经看到它是为了执行此操作而提到的。

如果做不到这一点,还有另一种方法。

  • 从源代码管理中删除输出 .config 文件并签入(为此最好使用源代码管理资源管理器)。
  • 从 VS 中手动运行 .tt,它将再次添加该文件 - 现在它旁边应该有一个加号。
  • 再次在源代码管理资源管理器中,右键单击此“新”文件并选择“撤消挂起的更改”。现在该文件位于磁盘上,但不在源代码管理中。
  • 现在 TT 可以运行,该文件是项目的一部分(因此将被发布或其他),但它不受源代码控制。

问题在于其他人第一次加载该项目,如果他们运行 .TT,他们的 Visual Studio 将自动创建输出文件 - 在这种情况下,他们要么需要重复此过程(从步骤 2 开始),要么需要手动创建一个正确名称的存根 .config 文件(我建议在加载项目之前),以便项目看到它并且不会尝试对其进行重新源控制。