【发布时间】:2021-03-27 03:14:55
【问题描述】:
我正在尝试创建一个部署一些 T4 .ttinclude 文件的 NuGet 包,这些文件又依赖于许多引用的程序集。但是当我尝试启用时,我在使用项目时遇到了问题
.ttinclude 文件旨在使用以下语法引用所需的程序集:
<#@ assembly name="$(TargetDir)WidgetDatabase.dll" #>
在我的 NuGet 包的目标文件中,我配置 T4ParameterValues 以便将 $(TargetDir) 传递给 T4 文本转换器:
<ItemGroup>
<T4ParameterValues Include="TargetDir">
<Value>$(TargetDir)</Value>
<Visible>false</Visible>
</T4ParameterValues>
</ItemGroup>
在目标 .csproj 中,我有以下内容:
<PropertyGroup>
<TransformOnBuild>true</TransformOnBuild>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="WidgetDatabase">
<Version>0.8.1-alpha</Version>
</PackageReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v16.0\TextTemplating\Microsoft.TextTemplating.targets" />
问题是 T4 文本转换发生在构建之前,但这意味着没有任何引用的程序集被复制到 $(TargetDir)。如何在文本转换目标运行之前强制将依赖项复制到 $(TargetDir) 中?
This question 相关,但不能令人满意地解决此问题。
【问题讨论】:
标签: msbuild visual-studio-2017 visual-studio-2019 nuget-package t4