在MsBuild中检测T4文本转换的任意输入文件更改

时间:2018-08-17 07:28:29

标签: msbuild t4

我正在努力获取使用MsBuild进行T4转换的基本示例。库由单个输入文件(csv)组成,该文件转换为单个.cs文件,该文件内置于.dll。要求是

  • 如果.csv文件更改,则应在编译之前重建项目,包括转换csv-> cs,以使dll更新。
  • 如果.tt文件更改,则应将项目检测为过期(即使在VS中没有构建时转换插件的情况下,此项目也可以工作)
  • 如果.tt或.csv文件均未更改,则对于库的输出dll,必须已过时。该项目应使用最后生成的.cs文件进行构建,如果没有其他更改,则应视为最新。
  • 这必须在命令行和VS中都使用msbuild进行工作

我尝试同时使用 $("#showleave").on('click','button',function(event){ var BASE_URL = "http://localhost/employeemgt/index.php/"; var leave_id = $(this).val(); var response; $.ajax({ type: 'POST', dataType: "JSON", data:{leave_id:leave_id}, url: BASE_URL + 'admin/AdminDashboardController/viewRequest', success:function(data){ console.log(data); $('#pendingLeaveRequest #leave_details').html(data); $('#pendingLeaveRequest').modal('show'); }, error:function(error){ alert(error); }}); }); Microsoft.TextTransform.Targets都没有成功。可以预期的是,当 template 更改时,它会重建。但是在这种情况下,模板是固定的转换,并且其 input (csv)正在更改。

csproj的相关位:

Clarius.TransformOnBuild

问题似乎是msbuild和transform插件(例如Clarius.TransformOnBuild)都仅检测到 template 本身(.tt文件)的更改,而不是输入.csv文件的更改。

所以我想做的是有任意输入。在这种情况下,如果模板的输入.csv文件已被修改,则应认为该项目相对于其输出已过时。这不是受支持的方案吗?

类似的问题(尽管我无法在此处解释答案): TextTransform on MSBuild only when file modified? (or an alternate route of doing this)

0 个答案:

没有答案