标签: customtool

如何在"我的自定义工具"中写入Visual Studio输出窗口?

我正在编写一个自定义工具,我目前正在做我想要的功能.如果出现问题,我希望能够写入Visual Studio.(代码格式不正确或其他).

这有什么标准吗?现在我基本上可以强制该工具失败,Visual Studio会发出警告,表明它已经这样做了.我想在"输出"窗口中输入一个类别,其中包含我要发送的任何结果消息.我还可以在错误列表窗口中使用更具描述性的任务/警告.

vsx customtool visual-studio

34
推荐指数
2
解决办法
2万
查看次数

如何为所有SpecFlow功能重新生成设计器代码

我有~30个SpecFlow功能文件,我最近从源代码控制中删除了Foo.feature.cs文件,因为我厌倦了解决Designer Generated代码中的合并冲突.

我没有从Visual Studio项目中排除或删除这些文件,因此Visual Studio仍然认为它们应该在那里,它们只是在硬盘上丢失了.

理想情况下,我只想单击一个根文件夹并重新生成文件后面的所有代码,但VS 2010和SpecFlow 1.9不存在这样的选项.我甚至可以通过编程从命令行重新生成它们,创建另一个自定义工具或添加预编译构建事件.

有没有办法为SpecFlow功能(*.feature.cs文件)重新生成所有Designer生成的代码,而无需右键单击每个.feature文件并单击"运行自定义工具"?

bdd code-behind visual-studio-2010 customtool specflow

30
推荐指数
2
解决办法
2万
查看次数

如何隐藏Visual Studio中自定义工具生成的文件

我想隐藏我的自定义工具生成的文件,但我找不到任何关于如何完成此操作的文档.

我正在寻找的一个例子是文件背后的WPF代码.这些文件不会显示在Visual Studio项目视图中,而是使用项目进行编译,并在IntelliSense中可用.文件后面的WPF代码(例如,Window1.gics)由自定义工具生成.

c# wpf code-generation customtool visual-studio

28
推荐指数
2
解决办法
9308
查看次数

一步一步,如何在Visual Studio 2010中为给定类型的每个文件添加自定义生成步骤?

问题

  1. 我在visual studio 2010项目中有一堆自定义文件.
  2. 我需要在这些自定义文件发生更改时运行该工具.
  3. 该工具生成现有.cpp文件包含的.h文件.
  4. 我希望该工具作为构建过程的一部分运行.
  5. 它需要在visual studio中运行,但理想情况下也可以作为msbuild进程的一部分运行.

现有的不合标准解决方案

在每个文件上,每次添加它时,我都可以转到文件设置,将项目类型设置为自定义构建工具,然后在自定义构建工具对话框中,设置命令行参数,设置(硬编码)输出,以及设置(硬编码)其他依赖项.

显然,这是一个糟糕的解决方案,因为每次添加自定义类型的新文件时,这都是一项非常重要且容易出错的工作量.

理想的解决方案

我设置了visual studio,无论扩展名为.foo,它都会在.foo文件发生变化时运行工具bar.exe,然后再编译CPP代码.

我尝试过的事情

基于此:http://msdn.microsoft.com/en-us/library/3e889s84( v=vs.100) .aspx我试图设置.targets和.xml文件.但是,我无法找到如何创建一个新的项目类型,使其显示在visual studio中,我也无法弄清楚如何使它神奇地应用于.foo类型的每个文件.最重要的是,我还没有想到如何链接任何描述调用我的bar.exe工具的行为.

我试图搜索所有visual studio的xml /目标文件,以便跟踪现有的项类型并确定它们如何转换为实际的构建操作.它始终在ItemType的墙上结束,其中有一些在ProjectItemsSchema中描述,但我无法找到它们的实现位置,或者我自己如何实现它们.

MSDN的文档已经彻底失败了,我想我已经十次阅读每个可能相关的页面,但无济于事.

在visual studio 2008中,我有一个使用.rules文件的东西,看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<VisualStudioToolFile
Name="Foo Build Rules"
Version="8.00"
>
<Rules>
    <CustomBuildRule
        Name="FooBuild"
        DisplayName="FooGen"
        CommandLine="..\..\tools\FooGen.exe [inputs]"
        Outputs="$(InputName).h"
        AdditionalDependencies="*.foo"
        FileExtensions="*.foo"
        ExecutionDescription="Generating Foos..."
        >
        <Properties>
        </Properties>
    </CustomBuildRule>
</Rules>
</VisualStudioToolFile>
Run Code Online (Sandbox Code Playgroud)

然而,这个功能在2010年已被弃用,我一直无法弄清楚如何使用新系统复制它.

救命?

msbuild build-process code-generation visual-studio-2010 customtool

21
推荐指数
1
解决办法
2万
查看次数

自定义工具快捷方式visual studio

有没有办法在visual studio中为自定义工具创建快捷方式?目前我必须导航到解决方案中的工具,右键单击并运行自定义工具.如果我可以绑定快捷键或从工具栏运行该工具,那将是很好的.有谁知道这样做的方法?

customtool visual-studio

19
推荐指数
1
解决办法
4050
查看次数

为整个解决方案运行自定义工具

有没有办法为整个解决方案"运行自定义工具"?

为什么?自定义工具正在开发中,当进行更改时,我需要刷新使用它的所有项目以确保没有任何中断.

customtool visual-studio

18
推荐指数
3
解决办法
1万
查看次数

如何在每次切换到另一个选项卡时停止执行T4?

当我编辑T4时,每次切换到另一个文件时都会执行脚本.对于快速简单的脚本是可以的,但是一些脚本需要很长时间才能执行.有没有办法禁用这种行为?我希望脚本只在我保存T4文件时运行或从菜单中手动选择"运行自定义工具".

c# t4 code-generation customtool visual-studio

16
推荐指数
3
解决办法
4192
查看次数

使用C#运行T4模板

我有T4模板(mycode.tt),它生成一个cs文件.我通常右键单击tt文件并选择RunCustomTool,它在内部获取xml文件并为我生成代码.现在我想使用ac #windows应用程序运行自定义工具.因此,只需单击一个按钮即可运行自定义工具.是否可以从c#运行CustomTool.

编辑:

我有2个tt文件,其中一个没有codebehind cs文件.但另一个附加了.cs文件,我从第一个.tt文件调用第二个文件的TransformText()方法.所以我需要调用第一个文件.所以我不能使用TransformText()方法.有没有办法动态调用textTemplate文件?

c# t4 customtool

16
推荐指数
2
解决办法
2万
查看次数

在MSBuild中使用Studio的"自定义工具"

我有一个Visual Studio的"自定义工具",可以将一些模板文件转换为代码.为了保持一致性和可移植性,我希望能够在Visual Studio外部构建时从MSBuild运行此模板处理器.

Visual Studio为文件创建以下代码段:

<!-- the template -->
<None Include="Template.in">
  <Generator>Template Processor</Generator>
  <LastGenOutput>Template.in.Designer.cs</LastGenOutput>
</None>
<!-- generated file -->
<Compile Include="Template.in.Designer.cs">
  <AutoGen>True</AutoGen>
  <DesignTime>True</DesignTime>
  <DependentUpon>Template.in</DependentUpon>
</Compile>
Run Code Online (Sandbox Code Playgroud)

这里的问题Template.in是它只由Studio处理,而不是由MsBuild处理,这可能导致过时的Designer.cs文件.

是否存在可以IVsSingleFileGenerator直接使用(包括从注册表加载其位置)的现有MSBuild任务,还是必须手动调用处理器(通过自己实现所述MSBuild任务或调整处理器)?

有趣的是,MSDN上的使用MSBuild文章说:

单个文件生成器只能在设计时访问,但MSBuild任务可以在设计时和构建时使用.因此,为了获得最大的灵活性,请使用MSBuild任务来转换和生成代码.有关更多信息,请参阅项目项(Visual Studio SDK).


更新:我已经将这个特定的自定义工具入侵到了msbuild任务中,但它并不漂亮.我仍然更喜欢维护良好的通用解决方案.我在我的博客上发布了这个来源.

msbuild customtool visual-studio

10
推荐指数
1
解决办法
3198
查看次数

在Visual Studio中,我可以创建一个文件来运行另一个自定义工具吗?(在这种情况下使用Xsd2Code)

我想尝试在Visual Studio中使用自定义工具时,可以更改一个文件的内容,触发另一个文件的自定义工具.

我的情况是这样的:

在Visual Studio C#项目中,我有一个"master.xsd"xml架构,其中包含其他几个其他xsd文件.我正在使用Xsd2Code Visual Studio自定义工具从架构生成.cs.当master.xsd本身发生变化时,这可以正常工作,但是当其他xsds之一发生变化时,我希望自定义工具在文件master.xsd上运行.

有没有办法让一个文件触发另一个自定义工具?

[编辑 - 有关我为什么要使用自定义工具的详细信息]

目前我们有一个GenerateFiles.bat文件,它从命令行调用Xsd2Code来生成模式中的代码(如下面的MattDavey所建议的).这个工作,太慢了.

问题在于,每次构建Xsd2Code都会运行,但是由于很多其他项目都依赖于这个带有模式的项目,所以即使可能没有任何改变,它们也会重新编译.实际结果是,即使对单元测试进行微小改动,也只有一半的项目重新编译.这就是为什么我们一直在寻找自定义工具方法,只有在架构发生变化时才生成代码文件.

c# visual-studio-2010 customtool xsd2code

7
推荐指数
1
解决办法
1250
查看次数