如何在T4文件中引用.Net标准?

时间:2017-09-20 16:37:06

标签: .net t4 .net-standard

我有一个.Net标准2.0库。在这个库中我有一个T4文件。该文件包含这些行。

<#
            foreach (MessageType enumValue in Enum.GetValues(typeof(MessageType)))
            {
                var name = Enum.GetName(typeof(MessageType), enumValue);
#>

我在Visual Studio中收到以下错误。

  

编译转换:类型&#39; Enum&#39;在程序集中定义   没有引用。您必须添加对程序集的引用   &#39; netstandard,Version = 2.0.0.0,Culture = neutral,   公钥= cc7b13ffcd2ddd51&#39;

如何添加对&#39; netstandard&#39;?

的引用

3 个答案:

答案 0 :(得分:3)

我有类似的问题。 我通过在t4中添加引用到磁盘上的文件

来解决这个问题
<#@ assembly Name="C:\Program Files\dotnet\sdk\2.1.4\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\netstandard.dll" #>

如果您没有该文件,请尝试在目录“C:\ Program Files \ dotnet \ sdk”中找到 netstandard.dll

答案 1 :(得分:3)

最近几天这成为我们的问题。此外,我们需要一种适用于所有开发机和所有构建机的解决方案。

因此,基本上,我们将C:\Program Files\dotnet\sdk\2.1.4\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\netstandard.dll文件(以及所需的其他两个标准文件)复制到了解决方案下的TTLibs文件夹中。

然后我们像这样在TT solution-relative 中进行引用: <#@ assembly Name="$(SolutionDir)TTLib\netstandard.dll" #>

答案 2 :(得分:3)

或者,您可以使用

      <ResourceDictionary>
        <Style x:Key="CustomWindowStyle" TargetType="{x:Type Window}">
            <Setter Property="WindowChrome.WindowChrome">
                <Setter.Value>
                    <WindowChrome/>
                </Setter.Value>
            </Setter>
            <Setter Property="??" Value="Blue"/>
        </Style>
    </ResourceDictionary>