C# 项目文件配置

C# 项目文件配置

一、常量

  1. 目录
    
    # 项目目录
    $(ProjectDir)
    
    # 输出目录
    # 编译:bin\Debug\net8.0\
    # 发布:bin\Release\linux-x64\
    $(OutDir)
    
    # 发布目录
    # 编译:bin\Debug\net8.0\publish\
    # 发布:$(ProjectDir)bin\Release\linux-x64\PubTmp\Out
    $(PublishDir)
    
    
  2. 环境
    # 配置
    # Debug 
    # Release
    $(Configuration)
    
  3. 目标框架
    # 目标框架
    # net6.0
    # net7.0
    $(TargetFramework)
    
  4. 其他
    # Apricot 目录下所有文件
    Apricot\**\*.*
    
    # Apricot 目录下所有(文件、目录)
    Apricot\**\*
    
    # 递归目录
    %(RecursiveDir)
    
  5. 待续

二、输出

  1. 查看方式 编译输出栏目-> 错误列表->下拉框选择当前项目
  2. 消息
    <Target Name="Message" AfterTargets="Build">
       <Message Text=" Print Message ... "/>
    </Target>
    
  3. 警告
    <Target Name="Warning" AfterTargets="Build">
       <Message Text=" Print Warning ... "/>
    </Target>
    

三、复制文件

  1. 参考项目
  2. 编译复制
    <!--添加来源文件属性-->
    <ItemGroup>
        <BuildFile Include="opencv\Windows\*"/>
     </ItemGroup>
    
     <!--将来源文件拷贝至(bin/Debug/net8.0)-->
     <Target Name="CopyFile" AfterTargets="Build">
         <Copy SourceFiles="@(BuildFile)" DestinationFolder="$(OutDir)" />
     </Target>
    
  3. 发布复制
    <!--添加来源文件属性-->
    <ItemGroup>
     <PublishFile Include="opencv\Windows\*"/>
    </ItemGroup>
    
    <!--将来源文件拷贝至(bin/Debug/net8.0)-->
    <Target Name="CopyFile" AfterTargets="Publish">
      <Copy SourceFiles="@(PublishFile)" DestinationFolder="$(PublishDir)" />
    </Target>
    
  4. 1

四、复制文件夹

  1. 参考项目
  2. 编译复制
    <!--需要复制的目录-->
    <ItemGroup>
       <BuildFile Include="opencv\Windows\**\*"/>
    </ItemGroup>
    
    <!--复制到 Windows 目录-->
    <Target Name="BuildCopyFile" AfterTargets="AfterBuild">
       <!--输出目录-->
       <Warning Text="$(OutDir)"/>
       <!--拷贝整个目录至 bin 目录-->
       <Copy SourceFiles="@(BuildFile)" DestinationFolder="$(OutDir)\Windows\%(RecursiveDir)" />
     </Target>
    
  3. 发布复制
    <!--将bin 目录编译的运行时目录-->
    <ItemGroup>
      <PublishFile Include="bin\$(Configuration)\$(TargetFramework)\runtimes\**\*"/>
    </ItemGroup>
    
    <Target Name="PublishCopyFile" AfterTargets="Publish">
       <!--输出目录-->
       <Warning Text="publish: $(PublishDir)"/>
       <!--拷贝整个目录至 Release 目录-->
       <Copy SourceFiles="@(PublishFile)" DestinationFolder="$(PublishDir)\runtimes\%(RecursiveDir)" />
     </Target>
    

五、项目打包

  1. 参考项目
  2. 整体打包 & 引用项目
    <ItemGroup>
     <!--输出引用项目程序集、引用包标识-->
     <ProjectReference Include="..\Apricot.Http.Net\Apricot.Http.Net.csproj">
         <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
         <IncludeAssets>Apricot.Http.Net.dll</IncludeAssets>
     </ProjectReference>
     <ProjectReference Include="..\Apricot.Infrastructure\Apricot.Infrastructure.csproj">
         <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
         <IncludeAssets>Apricot.Infrastructure.dll</IncludeAssets>
     </ProjectReference>
     </ItemGroup>
    
     <!--输出所有依赖包dll-->
     <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU' Or '$(Configuration)|$(Platform)'=='Release|AnyCPU' ">
     <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
     </PropertyGroup>
    
posted @ 2025-04-19 15:48  1764564459  阅读(18)  评论(0)    收藏  举报