c# - NuGet 没有正确处理带有链接文件的 CopyToOutputDirectory
问题描述
我在我的csproj
.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<Content Include="TextFile1.txt" Link="Files\TextFile1.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Files\TextFile2.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
</Project>
如您所见,两个文件都在 subdirectoryFiles
中,并且根文件夹中没有文本文件,因为根文件夹中的文件未标记为,<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
但链接是。
现在我想打包这个应用程序,它不尊重我的文件链接并将其转储TextFile1.txt
到根文件夹中。
创建的*.nuspec
文件如下所示
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
<metadata>
<id>ConsoleApp44</id>
<version>1.0.0</version>
<authors>ConsoleApp44</authors>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Package Description</description>
<dependencies>
<group targetFramework="net5.0" />
</dependencies>
<contentFiles>
<files include="any/net5.0/TextFile1.txt" buildAction="Content" />
<files include="any/net5.0/Files/TextFile2.txt" buildAction="Content" />
</contentFiles>
</metadata>
</package>
解决方案
如果您只想将 nuget 包中的TextFile1.txt
andTextFile2.txt
复制到主项目的输出文件夹中的相同文件夹结构中,您可以尝试以下操作:
两个提示:
要将文件从
nupkg
复制到主项目的输出文件夹中,您应该使用<PackageCopyToOutput>true</PackageCopyToOutput>
.使用
PackagePath
指定文件夹结构
ConsoleApp44.csproj
在文件下使用此部分:
<ItemGroup>
<Content Include="TextFile1.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<Link>Files\TextFile1.txt</Link>
<PackagePath>content\Files;contentFiles\any\any\Files</PackagePath>
<PackageCopyToOutput>true</PackageCopyToOutput>
</Content>
<Content Include="TextFile2.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<Link>Files\TextFile2.txt</Link>
<PackagePath>content\Files;contentFiles\any\any\Files</PackagePath>
<PackageCopyToOutput>true</PackageCopyToOutput>
</Content>
</ItemGroup>
其实就是PackagePath
在安装nuget包的时候,在主项目中指定自定义的输出文件夹结构。您可以根据需要更改结构。
然后,你应该重新打包 lib 项目,卸载旧版本的 nuget 包,清理 nuget 缓存或删除所有C:\Users\xxx\.nuget\packages
. 之后,重新安装新的发布版本。
推荐阅读
- xcode - Xcode - 未启用强化运行时
- android - 无法解决:livedata-core
- javascript - xdescribe,xit 分别表示'未知标识符'xdescribe'/'xit'
- node.js - 如何使提交的表单在出现在索引页面之前经过批准
- java - 为 RecyclerView 和 GridLayoutManager 设置 onclick 时如何添加 Toast 位置?
- javascript - 试图了解用于 react 的 formik 包是如何构建的
- c++ - C++ 数组字符串中的空间检测问题
- css - 左右添加图片链接到 CSS 类
- javascript - npm run build 在为 lodash 安装所有依赖项后抛出代码 ELIFECYCLE
- apache-camel - apache camel中的多条路线 - 最佳实践