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

Nug*_*ugs 7 c# nuget

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

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

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

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

我的.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>
Run Code Online (Sandbox Code Playgroud)

我用来生成包的命令是:

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

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

Ami*_*mit 4

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

检查答案,如何从 NuGet 包中排除 T4 模板,您可以从打包中排除 .tt 文件。