Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2008 从源代码管理中排除嵌套项_Visual Studio 2008_Tfs_T4_Version Control - Fatal编程技术网

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

Visual studio 2008 从源代码管理中排除嵌套项,visual-studio-2008,tfs,t4,version-control,Visual Studio 2008,Tfs,T4,Version Control,我正在使用T4模板在我正在处理的项目中生成一些.config文件 我已经设置了一个预构建任务来查找解决方案目录中的所有.tt文件,然后执行TextTransform命令行工具,以便在每个构建中新生成代码 但是,我现在遇到了“拒绝访问”错误,因为(例如)当它尝试在Web.UAT.tt文件上执行TextTransform时,Web.UAT.Config文件在TFS中受源代码控制,因此受写保护 通常我会在VisualStudio中选择.Config文件,然后执行文件->源代码管理->从源代码管理中排除

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

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

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

通常我会在VisualStudio中选择.Config文件,然后执行文件->源代码管理->从源代码管理中排除的操作。不幸的是,对于在另一个文件下显示为“嵌套”的任何文件,这并不是一个选项

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

有人知道如何从源代码管理中排除较低级别的嵌套文件,但保留顶级文件吗


谢谢

我假设您正在使用TFS

您将无法完美地完成此操作,因为VisualStudio将自动将添加到项目中的任何新项添加到源代码管理中。最好的解决方案是在运行模板之前使用MSBuild并对输出文件发出签出命令(但之后可能需要再次签入)。快速查看一下,我已经看到了为实现此目的而提到的

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

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

问题是其他人第一次加载项目,如果他们运行.TT,他们的Visual Studio将自动创建输出文件-在这种情况下,他们可能需要重复此过程(从步骤2开始),或者需要手动创建一个正确名称的stub.config文件(我建议在加载项目之前)这样项目就可以看到它,而不会试图重新对其进行源代码控制。

好的……我使用了Andras Zoltan的答案的改编版本

基本上,我最后做的是:

  • 单击Visual Studio中的.tt文件,并将属性中的“自定义工具”行更改为空。这将从解决方案中删除.config文件。
  • 向解决方案中添加一个新的空白项,称为.tt的输出文件(因此,Web.UAT.tt->Web.UAT.config)。
  • 选择新添加的文件,并将其从源代码管理中正常排除(文件->源代码管理->排除)。
  • 现在,当您构建时,您应该在解决方案中看到新生成的文件,但不需要任何签入或签出

    这种方法有几个缺点。首先,您必须对项目中的每个.tt文件执行此操作,并确保其他任何开发人员都执行相同的操作。其次,您现在只能通过执行构建来生成输出文件

    我认为,从长远来看,我可能会采纳Andras的建议,编写某种MSBuild脚本来签出和签回输出文件,或者至少使用删除“只读”标志


    谢谢!< /P>你使用的是哪个源代码管理提供商?SoScCuFe?Team Foundation?什么?TFS……我会把问题编辑得更清楚。谁能看到一个更好的方法来做这件事?我错过了什么陷阱?狡猾的解决方案。但是我的问题是,不再有任何明确的连接了。即使是除name之外的两个文件;不熟悉TT技术的人可能只需编辑.config文件,然后想知道为什么他们的编辑被撤消。同样,熟悉TT的人也会想知道为什么层次结构不存在(并且可能假设项目已断开!).没错,我的第二个解决方案还需要与团队其他成员进行一些沟通;但一旦加载,一切看起来都正常。不过,我想如果它有效,那就试试吧。谢谢Andras。我使用了你第二个建议的修改版本来解决这个问题。