NuGet与具有EF6实体的类的直接引用

时间:2017-08-23 14:44:38

标签: c# nuget

我有一个包含许多EF6实体的类库。我从这个库中生成了一个NuGet。每当我直接引用库时,只将DLL放在bin中,但是当我通过NuGet安装库时,它会将实体* Content.tt和* .tt文件复制到项目的文件夹中。

关于这种差异,我有几个问题:

  1. 为什么NuGet在项目引用时不需要这些文件?

  2. 是否需要这些实体文件,或者我是否能够强制NuGet在安装时不克隆这些文件?

  3. 我的.nuspec文件标准如下:

        <?xml version="1.0"?>
        <package >
          <metadata>
            <id>MYID</id>
            <version>12.0.2</version>
            <title>MYTITLE</title>
            <authors>MYNAME</authors>
            <owners></owners>
            <requireLicenseAcceptance>false</requireLicenseAcceptance>
            <description</description>
            <releaseNotes></releaseNotes>
            <copyright>Copyright 2017</copyright>
            <tags></tags>
          </metadata>
        </package>
    

    我用来生成包的命令是:

      

    c:\ nuget.exe pack MYID.csproj -IncludeReferencedProjects -Prop   平台= AnyCPU

         

    c:\ nuget.exe add MYID.1.0.0.nupkg -Source M:\ Dev \ NuGetPackages

2 个答案:

答案 0 :(得分:4)

除非您正在进行运行时代码生成,否则不会需要

.tt文件。由于您正在打包到dll中,因此情况并非如此。实体框架使用T4模板(.tt文件)从EDMX文件生成C#类,因为图中的对象已更改。他们不需要执行最终代码。

检查答案,How to Exclude a T4 Template from a NuGet Package,您可以从包装中排除.tt文件。

答案 1 :(得分:1)

对网络的一点研究表明,许多用户在3.4.3版本到3.4.4版本之间出现了这个问题,并且在版本3.5.0中得到了解决。

看起来,这是软件包之间的微软错误。我不知道你使用的是哪个版本,但我建议检查这种可能性。