gpt4 book ai didi

visual-studio - 防止在 NuGet content 和 contentFiles 文件夹中复制文件

转载 作者:行者123 更新时间:2023-12-04 15:18:18 24 4
gpt4 key购买 nike

我的 NuGet 包需要提供一些相当大的文件来构建输出目录。

在旧的 NuGet 模型中,此类文件必须存储在 content 中。 .nupkg 的文件夹.而在 new model introduced in NuGet 3.3 ,此类文件必须存储在 contentFiles folder .

保持与旧版本 NuGet 的兼容性,主要是与 Package.config package management format 的兼容性。 ,我需要将文件复制到两个文件夹中。不幸的是,这几乎使包裹的大小增加了一倍。

有没有办法防止这种情况?我可以以某种方式链接 contentFilescontent文件夹?

最佳答案

如果您只想将文件输出到构建输出( content 仅将文件复制到输出目录,但确实将其设置为复制到输出目录项),则可以使用完全不同的方法通过创建一个 msbuild 文件将被纳入项目。
您可以通过将两个文件 - 例如 test.jpg 放入 tools 文件夹(您也可以使用 build )并将 Your.Package.Id.targets 文件添加到 build 文件夹(名称是包扩展名 65 的名称为 104 的包扩展名 65 为 104)内容:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Content Include="$(MSBuildThisFileDirectory)..\tools\test.jpg">
<Link>test.jpg</Link>
<Visible>false</Visible>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
</ItemGroup>
</Project>
无论使用哪种 NuGet 引用的“样式”( .targetspackages.config ),此目标都将自动导入到项目文件中,并且只要旧版本的 VS 支持 NuGet 和 ToolsVersion PackageReference ,就应该向后兼容。 4.0 元数据表示文件将在输出/发布目录中的位置。您可以将其设置为例如 Link 创建嵌套结构并重命名文件。 (您甚至可以使用 MSBulid 变量来使用一些引用项目的配置)。 defaultContent\images\foo.jpg 元数据阻止解决方案资源管理器显示文件的完整相对路径,这可能最终会出现在许多嵌套的 Visible 节点中。 .. 适用于使用 CopyToPublishDirectory 发布目标的 .NET Core/ASP.NET Core 应用程序或基于 SDK 的项目。
请注意,您可以将 Publish -path 设置为任何内容,具体取决于文件在包中的位置。您也可以使用通配符(但随后将 Inclue 设置为 Link )

关于visual-studio - 防止在 NuGet content 和 contentFiles 文件夹中复制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47468941/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com