通过Nuget安装时,不会复制.Net核心解决方案中的Nuget内容文件

Jos*_*a I 9 nuget nuget-package asp.net-core

我无法复制我在使用nuget package explorer创建nuget包时添加的.Net核心Web应用程序项目中的内容静态文件.同样的事情在.Net框架项目模板中正确复制,但在.net核心模板中没有.我正在使用VS 2015更新3.Am我在这里缺少什么?任何帮助将不胜感激.

下面是我的内容文件结构快照.

在此输入图像描述

Joe*_*erg 9

有关于此的nuget博客文章,目前尚不支持.

支持的项目类型

此功能仅适用于将安装到使用project.json文件管理的项目的程序包.目前只有两个项目类型由project.json管理.

  • UWP应用程序
  • 便携式类库

contentFiles选项不适用于其他项目类型.

遗憾的是,这个基本功能已被排除在.net核心项目之外.特别是因为支持PCL,它是.net Core项目的一个子集.

关于GitHub存在相当多的问题,目前还不清楚这个功能是否会很快回归.

  • 到目前为止,WAS之前提供的BASIC功能尚未恢复!这是生产力的障碍. (2认同)

Maj*_*jor 5

好像还是不支持。“破解”它的唯一方法是使用 MSBuild 目标和构建事件。

根据文档:

构建
MSBuild .targets.props文件 自动插入到项目文件或 project.lock.json (NuGet 3.x+) 中。

因此,要使其适用于任何文件,例如:“config.xml”作为 Nuget 静态内容:

  1. 创建您的 XY.nuspec 文件(像往常一样)
  2. 将 config.xml 包含到 Nuget 中: <file src="config.xml" target="contentFiles\any\any\config.xml" />
  3. 添加一个新的 .targets 文件XY.targets
  4. 将新的 XY.targets 文件包含到您的包中的“build”文件夹中。 <file src="XY.targets" target="build"/>

XY.targets 文件的内容

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <ContentFilesPath>$(MSBuildThisFileDirectory)..\contentFiles\any\any\</ContentFilesPath>
  </PropertyGroup>
  <Target Name="CopyConfigs" BeforeTargets="PreBuildEvent">
    <Copy SourceFiles="$(ContentFilesPath)\config.xml" DestinationFiles="$(ProjectDir)config.xml" SkipUnchangedFiles="true" Condition="!Exists('$(ProjectDir)config.xml')"></Copy>
  </Target>
</Project>
Run Code Online (Sandbox Code Playgroud)

打包和安装 Nuget 后,此 MSBuild 目标将成为缓存包的一部分,并将在每个构建上运行(当前在构建之前)。

此解决方案的问题:

  • 添加的文件在构建解决方案之前仍处于链接状态。在构建阶段 (BeforeTargets="") 文件被复制。直到这个文件仍然只是链接!!!
  • 如果您将内容文件设置为具有构建操作并将其复制到项目的输出目录中,那么这些设置将丢失!

不幸的是,这是目前最好的解决方案。