怪奇物语

怪奇物语

首页 新随笔 联系 管理

dotnet cli,.net6,.net7.net8, xxx.csproj 外部 DLL 引用,目录文件拷贝,引用外部 dll

.csproj 文件配置

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

  <ItemGroup>
    <Reference Include="Aspose.Cells">
      <HintPath>..\DemoProject.Dll\Aspose.Cells.dll</HintPath>
    </Reference>
    <Reference Include="ApiCommand">
      <HintPath>..\DemoProject.Dll\suzhou_function\ApiCommand.dll</HintPath>
    </Reference>
  </ItemGroup>

  <ItemGroup>
    <Content Include="..\DemoProject.Dll\suzhou_markingrule\**">
      <CopyToPublishDirectory>Always</CopyToPublishDirectory>
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
      <Link>suzhou_markingrule\%(RecursiveDir)%(Filename)%(Extension)</Link>
    </Content>
  </ItemGroup>

  <ItemGroup>
    <Content Include="..\DemoProject.Dll\suzhou_function\**">
      <CopyToPublishDirectory>Always</CopyToPublishDirectory>
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
      <Link>suzhou_function\%(RecursiveDir)%(Filename)%(Extension)</Link>
    </Content>
  </ItemGroup>

</Project>

项目目录结构

注:目录结构采用 树状层级 展示,关键目录/文件标注了与 .csproj 配置的对应关系。

# 项目根目录(假设项目名为 "DemoProject",可根据实际情况修改)
DemoRoot/
├─ # 1. 外部依赖库目录(.csproj 中通过 ..\DemoProject.Dll\ 引用)
│  DemoProject.Dll/          # 存放所有外部 DLL 和静态资源的根目录(与项目目录同级)
│  ├─ suzhou_function/       # 功能类 DLL 目录(对应 .csproj 中 ApiCommand.dll 引用和文件拷贝)
│  │  ├─ ApiCommand.dll     # 被引用的 DLL(<Reference Include="ApiCommand"> 配置)
│  │  └─ [其他文件]          # 该目录下的所有文件/子目录(如依赖 DLL、配置文件等,会被拷贝到输出目录)
│  │
│  ├─ suzhou_markingrule/    # 标注规则静态资源目录(对应 .csproj 中文件拷贝配置)
│  │  └─ [静态资源文件]       # 如 XML/JSON 规则文件、模板文件等(会被拷贝到输出目录)
│  │
│  └─ Aspose.Cells.dll       # 独立外部 DLL(Excel 操作库,<Reference Include="Aspose.Cells"> 配置)
│
├─ # 2. 当前 .NET 6.0 项目目录(存放 .csproj 和源代码)
│  DemoProject/              # 项目主目录(名称可自定义,如 "SuzhouBusinessProject")
│  ├─ DemoProject.csproj     # 你提供的项目配置文件(核心依据)
│  ├─ Program.cs             # .NET 6.0 控制台/API 入口文件(ImplicitUsings 启用,无需显式 using System)
│  │
│  ├─ # 3. 项目输出目录(编译/发布后自动生成,对应 .csproj 中 CopyToOutputDirectory/CopyToPublishDirectory)
│  │  ├─ bin/                # 编译输出目录
│  │  │  ├─ Debug/           # Debug 模式输出
│  │  │  │  └─ net6.0/       # 目标框架目录
│  │  │  │     ├─ DemoProject.dll       # 项目编译产物
│  │  │  │     ├─ Aspose.Cells.dll      # 引用的 DLL(自动复制或通过配置关联)
│  │  │  │     ├─ ApiCommand.dll       # 引用的 DLL(自动复制)
│  │  │  │     ├─ suzhou_function/      # 从外部目录拷贝的文件(<Content> 配置)
│  │  │  │     │  └─ [原 suzhou_function 下的所有文件]
│  │  │  │     └─ suzhou_markingrule/   # 从外部目录拷贝的文件(<Content> 配置)
│  │  │  │           └─ [原 suzhou_markingrule 下的所有文件]
│  │  │  └─ Release/         # Release 模式输出(结构同 Debug/net6.0)
│  │  │
│  │  └─ obj/                # 编译中间文件目录(如 .csproj.nuget.dgspec、临时编译文件等,无需手动修改)
│  │
│  └─ # 4. 发布目录(执行 dotnet publish 后生成)
│     └─ publish/            # 发布输出目录(结构同 bin/Release/net6.0,包含所有运行依赖)
│        ├─ DemoProject.dll
│        ├─ Aspose.Cells.dll
│        ├─ suzhou_function/
│        └─ suzhou_markingrule/
│
└─ # (可选)解决方案文件(若项目属于解决方案)
   DemoSolution.sln          # 解决方案文件(管理多个项目时存在,如包含 DemoProject 和其他依赖项目)
posted on 2025-09-03 08:00  超级无敌美少男战士  阅读(16)  评论(0)    收藏  举报