gpt4 book ai didi

c# - 来自引用的 .NET Standard 项目的多个 DLL

转载 作者:太空狗 更新时间:2023-10-29 21:21:02 28 4
gpt4 key购买 nike

我使用 Visual Studio 2017 和默认设置创建了三个 .NET Standard 类库 C# 项目。

项目:

  • 主要项目
  • 时间计划
    • 依赖项 -> 主项目
  • 时钟项目
    • 依赖项 -> TimeProject

他们每个人都必须有自己的输出目录,如:

<OutputPath>C:\Projects\DataControl\Build\MainProject</OutputPath>
<OutputPath>C:\Projects\DataControl\Build\TimeProject</OutputPath>
<OutputPath>C:\Projects\DataControl\Build\ClockProject</OutputPath>

项目 DLL 文件放在输出目录,但问题是引用的项目 DLL 也放在输出目录(TimeProject.dll 和 MainProject.dll)

输出目录(Copy Local = true):

  • \Build\MainProject:
    • MainProject.dll
  • \Build\TimeProject
    • MainProject.dll
    • TimeProject.dll
  • \Build\ClockProject
    • MainProject.dll
    • TimeProject.dll
    • 时钟工程.dll

如果我将属性 Copy Local 更改为 false,直接引用的项目中的 DLL 就会消失。那更好,但是嵌套引用的 DLL 仍然存在 -> ClockProject 中的 MainProject.dll。

输出目录(Copy Local = false):

  • \Build\MainProject:
    • MainProject.dll
  • \Build\TimeProject
    • TimeProject.dll
  • \Build\ClockProject
    • MainProject.dll
    • 时钟工程.dll

我想防止 ClockProject 在其输出目录中创建 MainProject.dll,因为 MainProject.dll 已经存在于 MainProject 的输出目录中。

我有一个巨大的项目,在这种情况下,我的项目文件夹中有很多相同的 DLL。但是,在我的程序启动期间,逻辑还会在子文件夹中搜索 DLL,然后找到同一项目的多个 DLL,这会导致版本冲突。一般来说,我想保留这个逻辑,所以我正在寻找一个只生成项目 DLL 而不是引用的解决方案。

最后,我的 csproj 文件。其他两个项目文件看起来相似。

时钟项目.csproj:

<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<OutputPath>C:\Projects\DataControl\Build\ClockProject</OutputPath>
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="..\TimeProject\TimeProject.csproj">
<Private>false</Private>
</ProjectReference>
</ItemGroup>

</Project>

最佳答案

我找到了以下解决方案:

ClockProject 需要 MainProject 和 TimeProject。

如果我只引用 ClockProject 中的 TimeProject 那么它可以工作(因为 TimeProject 引用 MainProject),但是 MainProject.dll 被复制到 ClockProject Output 文件夹,这是我不想要的。

但是,如果我引用 ClockProject 中的两个项目,即 Main- 和 TimeProject,并将两者都设置为 CopyLocal = false,则只有 ClockProject.dll 将被复制到 ClockProject 的输出文件夹中。

关于c# - 来自引用的 .NET Standard 项目的多个 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56570163/

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