visual-studio - Visual Studio 代码生成,基于项目的内容

标签 visual-studio code-generation extensibility visual-studio-express

我有兴趣根据 .csproj 中存在的某些文件进行一些代码生成。我可以使用哪些可扩展性方法来生成可与我的项目一起编译的 .cs 文件?

警告:我立即想到使用 T4 模板来完成任务。但是,此解决方案必须在 Visual Studio C# Express 上受支持。我认为 express 版本不支持 T4 模板

最佳答案

在 C# Express 上,答案很简单:没有。

C# Express 不支持扩展。人们以前尝试过,但它变得很难看。律师,困惑,一切。著名的例子是 TestDriven.NET .

如果您不介意在命令行中构建,您可以使用 msbuild 自定义任务,或预构建/构建后命令。

在 VS2005/VS2008(“正确的”)中,“自定义工具”是的方法之一;这涉及编写一个 PackageI've done this recently , 和 the code已开放供检查。

T4 是 future 的另一种选择。它不符合我的需要,但它可能适合你。


作为构建事件的快速检查,我添加了(在一个快速项目中)构建前和构建后事件(项目属性 -> 构建事件):

echo $(TargetPath)

echo $(SolutionDir)

分别;点击构建,现在的输出是:

------ Build started: Project: ConsoleApplication10, Configuration: Release Any CPU ------
echo D:\SomePath\ConsoleApplication10.exe
D:\SomePath\ConsoleApplication10.exe
c:\WINDOWS\Microsoft.NET\Framework\v3.5\Csc.exe /noconfig /unsafe+ /nowarn:1701,1702 /errorreport:prompt /warn:4 /define:TRACE /reference:"c:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Core.dll" /reference:"c:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Data.DataSetExtensions.dll" /reference:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Data.dll /reference:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Design.dll /reference:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.dll /reference:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Drawing.dll /reference:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll /reference:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Xml.dll /reference:"c:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Xml.Linq.dll" /debug:pdbonly /filealign:512 /optimize+ /out:obj\Release\ConsoleApplication10.exe /target:exe Form1.cs Form1.Designer.cs Form2.cs Form2.Designer.cs Program.cs Properties\AssemblyInfo.cs

Compile complete -- 0 errors, 0 warnings
ConsoleApplication10 -> D:\SomePath\ConsoleApplication10.exe
echo D:\SomePath
D:\SomePath
========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========

所以它似乎工作正常(即两个事件都已执行)。不优雅,但可行。宏应该允许您(需要一些技巧)访问项目项,例如 $(ProjectPath)Som​​eFile.xml

关于visual-studio - Visual Studio 代码生成,基于项目的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1202158/

相关文章:

visual-studio - 如何在 Visual Studio 构建中模拟/p msbuild 参数?

visual-studio - vstest.console.exe 可以工作,但是文件名不好,CodeCoverage.exe 没有给出任何结果

java - 如何生成类型List<? super 数>?

c++ - GCC 汇编代码生成错误和解决方法

python - python 中的宏

c++ - 从 C++ 类制作 Visual C++ DLL

javascript - Knockout.js View 模型发生更改,但已发布网站上的复选标记没有更改

visual-studio - 如何在 Visual Studio 中分别在不同文件夹/项目中运行(单元)测试?

ios - 是否会在默认邮件应用程序中启用 iOS 8 的操作扩展性?

metaprogramming - Boo 元编程和可扩展性功能的指南?