【问题标题】:A Nuget package copies the static files from its reference project when installedNuget 包在安装时会从其参考项目中复制静态文件
【发布时间】:2021-01-18 12:43:19
【问题描述】:

我有一个名为“A”项目的项目,它包含一些静态文件(如 dll 或其他)。

它的csproj如下

<ItemGroup>
    <ContentWithTargetPath Include="files\MyDll.dll">
        <CopyToOutputDirectory>Always</CopyToOutputDirectory>
        <TargetPath>MyDll.dll</TargetPath>
    </ContentWithTargetPath>
</ItemGroup>

<ItemGroup>
    <Content Include="files\MyDll.dll">
        <PackageCopyToOutput>true</PackageCopyToOutput>
        <PackagePath>contentFiles\any\any\;content\any\any</PackagePath>
    </Content>
</ItemGroup>

所以根据内容,无论我使用项目引用还是包引用来引用A,静态文件都会一直复制到输出文件夹。

然后我有一个名为“B”的项目,它使用项目引用来引用 A。

B的csproj部分如下:

<ItemGroup>
    <ProjectReference Include="..\..\A\A.csproj"/>
</ItemGroup>

现在我将 B 设为 Nuget 包,并由 C 项目(包参考)引用。

但是A的静态文件似乎没有出现在C的输出文件夹中。

有什么办法处理吗?

谢谢!

【问题讨论】:

    标签: c# visual-studio nuget project-reference packagereference


    【解决方案1】:

    contentFiles 节点无法从 nuget 依赖项 A 工作到主项目 C。在我多次测试中,这是一个相当大的问题。

    似乎 contentfFiles 节点无法将依赖项从 nuget 转移到主项目。

    解决方法之一是另外将 nuget A 安装到 Project C 中。

    ===========================

    并且解决方法可能不是那么方便,或者您可以将这些添加到项目 B 中,这样我们就不应该另外安装 nuget A:

    1) 将这些添加到项目B.csproj 文件中:

    <ItemGroup>
            <None Include="$(TargetDir)\MyDll.dll">
                <Pack>true</Pack>
                <PackagePath>contentFiles\any\any\;content\any\any</PackagePath>
                <PackageCopyToOutput>true</PackageCopyToOutput>         
            </None>     
    </ItemGroup>
    

    然后,重新打包您的项目 B

    【讨论】:

    • 谢谢!我尝试了很多方法,这个方法对我很有效。
    猜你喜欢
    • 1970-01-01
    • 2021-09-08
    • 2018-11-27
    • 1970-01-01
    • 1970-01-01
    • 2020-05-29
    • 1970-01-01
    • 2017-08-24
    • 1970-01-01
    相关资源
    最近更新 更多