我无法复制我在使用nuget package explorer创建nuget包时添加的.Net核心Web应用程序项目中的内容静态文件。同样的事情在.Net框架项目模板中正确复制,但在.net核心模板中没有。我正在使用VS 2015更新3.Am我在这里缺少什么?任何帮助将不胜感激。
以下是我对内容文件结构的快照。
答案 0 :(得分:8)
此问题有nuget blog post,目前尚不支持。
支持的项目类型
此功能仅适用于将安装到使用project.json文件管理的项目的软件包。目前只有两个项目类型由project.json管理。
- UWP apps
- 便携式类库
contentFiles选项不适用于其他项目类型。
很遗憾,这个基本功能已被排除在.net核心项目之外。特别是因为支持PCL,它是.net Core项目的一个子集。
GitHub上存在很多关于此问题的问题,并且很难不清楚这个功能是否会很快回归。
答案 1 :(得分:1)
似乎仍然不受支持。唯一的“破解”方法是使用MSBuild Targets和Build事件。
根据this文档:
构建
MSBuild .targets 和 .props 文件自动插入 项目文件或project.lock.json(NuGet 3.x +)。
因此,使其可以与任何文件一起使用,例如:“ config.xml”作为Nuget静态内容:
<file src="config.xml" target="contentFiles\any\any\config.xml" />
<file src="XY.targets" target="build"/>
XY.target的内容
<?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>
在打包和安装Nuget之后,此MSBuild目标将成为Cached软件包的一部分,并将在每个版本上运行(当前在生成之前)。
存在此解决方案:
不幸的是,这是目前最好的解决方案。
答案 2 :(得分:0)
某些公共nuget程序包(例如https://www.nuget.org/packages/NUnit3TestAdapter/3.10.0或https://www.nuget.org/packages/Selenium.WebDriver.ChromeDriver/)可以复制文件。我已尝试对其进行调查(https://github.com/nunit/nunit3-vs-adapter和https://github.com/jsakamoto/nupkg-selenium-webdriver-chromedriver)。但是看来,他们已经实施了非常棘手的解决方法
答案 3 :(得分:-1)
阅读这篇文章后,我想出了一个解决方法。我创建了一个.Net程序集项目,并将其从所有内容中完全清空。然后我将项目移动到与.Net Core Web应用程序的项目相同的目录中。我没有从Web应用程序添加NuGet包引用,而是从.Net程序集项目中添加它。所有文件都正确地复制到目录中,并自动添加到Web项目中,因为它们共享同一目录。这个解决方案感觉非常脏,但它允许我使用NuGet包管理.Net Core Web项目的静态文件。