相关疑难解决方法(0)

使用T4获取项目或相对目录

如何从t4模板中获取对visual studio项目或解决方案目录或t4模板目录的引用?

我有一个模板将一些文件连接在一起,这些文件位于相对于模板的位置.我需要通过相对手段获得对绝对位置的引用.硬编码绝对路径是不可接受的,因为visual studio项目并不总是在同一位置,这会破坏代码生成.从环境中读取当前工作目录也不起作用,因为它返回T4引擎所在的位置而不是模板.我刚刚进入t4,所以任何帮助都会受到赞赏.

file-io t4 code-generation visual-studio-2008 visual-studio

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

没有Visual Studio的T4?

我正在尝试将一些代码生成模板连接到我的团队的自动构建过程.我们的SCM团队不希望在我们的构建机器上使用Visual Studio(我很难与之争论).

有没有办法在没有Visual Studio的情况下安装T4引擎?

.net t4

33
推荐指数
5
解决办法
1万
查看次数

生成(通过T4)文件构建操作将重置为Build

我们在Visual Studio 2013中有一个数据库项目.在这个项目中,我们有一个生成.sql脚本的.tt文件.问题是在生成之后,生成的文件的构建操作自动设置为Build.如果我们手动将其更改为None,则会在重新生成(运行自定义工具)后重置为Build.

另一个奇怪的事情是,只有当.tt文件在数据库项目中并且在该项目的某个文件夹中(不在root中)时才会发生.如果.tt文件位于另一个项目(任何地方)或数据库项目的根目录中,则生成文件的构建操作在重新生成后不会更改.

我们没有任何Visual Studio加载项,我尝试禁用可能被禁用的所有扩展和更新.

如果需要,我会给你任何细节.

.net c# t4 visual-studio

22
推荐指数
1
解决办法
1723
查看次数

构建时T4转换的产品仅在下一个构建中使用

我有一个VS项目,其中包含:

  1. TextTransform在a template.tt上运行的预构建操作以生成generated.cs

  2. generated.cs 列为要编译的文件之一(即在项目文件列表中)

当我构建项目时,执行预构建操作,generated.cs重新创建,但VS编译以前的版本generated.cs(我猜它在构建过程开始时加载到内存中).

如何使构建使用新版本generated.cs(即在预构建操作中生成的版本)?如何强制构建订单?

请注意,文本转换输入是动态的,因此无法在设计时完成.

c# msbuild t4 visual-studio

16
推荐指数
1
解决办法
6389
查看次数

如何在Visual Studio中构建t4文件?

当我构建我的c#解决方案时,.tt文件将不会创建.cs文件输出.但是,如果我在解决方案资源管理器中一次单击一个.tt文件并选择"运行自定义工具",则会生成.cs,因此构建工具设置是正确的.如何才能使整个解决方案构建强制自定义工具在.tt文件上运行?

t4 visual-studio

14
推荐指数
2
解决办法
9194
查看次数

.Net Core项目中的TextTemplating目标

我最近将测试项目迁移到.NET Core 2.0.该测试项目使用文本模板生成一些重复的代码.之前的项目有一个构建目标,可以在构建之前生成所有T4模板.因此,生成的代码也不会签入VCS.

我在项目中使用了这个片段来确保构建模板:

<PropertyGroup>
  <!-- Default VisualStudioVersion to 15 (VS2017) -->
  <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">15.0</VisualStudioVersion>
  <!-- Determinate VSToolsPath -->
  <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
  <!-- Run T4 generation if there are outdated files -->
  <TransformOnBuild>True</TransformOnBuild>
  <TransformOutOfDateOnly>True</TransformOutOfDateOnly>
</PropertyGroup>
<!-- Import TextTemplating target -->
<Import Project="$(VSToolsPath)\TextTemplating\Microsoft.TextTemplating.targets" />
Run Code Online (Sandbox Code Playgroud)

我的第一个方法是保留这个片段并将其复制到新的.NET Core项目文件中.

在Visual Studio中,这很有效,因为显然,VSToolsPath设置正确.但是,当我运行.NET Core SDK工具时dotnet test(例如我在构建服务器上),VSToolsPath映射到Program Files\dotnet\sdk\2.0.3那里,无法找到文本模板目标.

因为这不起作用,我也尝试简单地Microsoft.VisualStudio.TextTemplating从Nuget 安装包,但这有两个问题:

  1. 它没有正式支持.NET Core并安装.NET 4.6.1和
  2. Nuget似乎没有安装任何东西,所以我无法调整项目文件中的路径.

t4 .net-core visual-studio-2017

13
推荐指数
2
解决办法
902
查看次数

VS 2010 Express版是否支持T4预处理模板?

刚刚安装了2010 Express Edition,我无法看到Preprocess t4模板作为选项.2010 Express不支持吗?

t4 visual-studio-2010

12
推荐指数
1
解决办法
1781
查看次数

针对Sharp Architecture/Northwind问题的T4

我刚刚下载了sharparchitecture/Northwind,我正在努力让crud脚手架工作.除了添加对此类库的缺少引用之外,我什么都没做.我尝试运行ScaffoldingGeneratorCommand.tt,然后点击3个错误.

错误1编译转换:类,结构或接口成员声明文件中的标记'this'无效:BaseTemplate.tt

错误2编译转换:类,结构或接口方法必须具有返回类型文件:BaseTemplate.tt

错误3编译转换:键入预期文件:BaseTemplate.tt

编译器说它们出现在BaseTemplate.tt的第一行,但我不认为这是真正的原因.

有人有这个问题吗?你知道我该怎么做才能解决它吗?

非常感谢你的时间,PK

t4 s#arp-architecture northwind sharp-architecture

10
推荐指数
2
解决办法
3284
查看次数

在构建服务器上运行TextTransform.exe(T4)

我正在尝试设置一个进程,我的T4模板将在构建服务器上进行转换(Visual Studio未安装在那里).

我已经阅读了所有在线参考文献,但无法获得显示如何执行此操作的明确来源.

具体来说,这是我遇到的两个问题:

  • TextTransform.exe抛出有关缺少DLL的错误:

C:\ TeamCity的\ buildAgent \工作\ AppSettings.tt(0,0):错误CS0006:编译转型:元数据文件"Microsoft.VisualStudio.TextTemplating.Interfaces.10.0,版本= 10.0.0.0,文化=中立,公钥= b03f5f7f11d50a3a '无法找到

使用gacutil注册DLL文件修复了这个问题,虽然我想避免这一步.

  • 在Visual Studio外部运行时,使用Host.ResolvePath(string)方法不返回任何值.

此方法有助于确定模板用作其数据源的.txt文件的完整路径.没有它,无法在构建服务器上找到此文件.

任何帮助将在运行中受到赞赏.

编辑:打开一个MS CONNECT问题:https://connect.microsoft.com/VisualStudio/feedback/details/744137/texttransform-exe-does-not-work-without-vs2010-installed

参考资料我检查过:

.net c# t4 code-generation visual-studio-2010

8
推荐指数
1
解决办法
5239
查看次数

如何以编程方式控制从T4生成的新文件的Build Action?

问题是:有没有办法在*.tt文件中设置一个设置,以便生成的文件设置为指定的Build Action?

问题是我使用模板生成代码,但它只是一个起点,消除了大量的输入.我不希望任何人按原样使用代码(生成的类),也不希望它混淆命名空间.目前,每次模板添加新文件时,我都必须手动将Build Action设置为None - 我想自动化它.

谢谢!

.net c# t4 templates

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