gpt4 book ai didi

c# - 来自单个 DotNet Core 项目配置文件的多个二进制文件

转载 作者:行者123 更新时间:2023-12-03 21:00:09 28 4
gpt4 key购买 nike

我有一堆用于测试/展示网络库的 CLI 实用程序的代码。该库被编译成一个程序集——DotNet Core DLL。

我有几个 CLI 示例展示了如何使用该库,例如,一个搜索使用分页功能,另一个返回所有内容等。基本上,每个都是一个简短的独立 CLI 程序。

我有针对 dotnet 核心的 CS 源文件和 csproj 文件。下面是配置:

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<Reference Include="mylib>
<HintPath>../../bin/Debug/netstandard2.0/publish/mylib.dll</HintPath>
</Reference>
</ItemGroup>
</Project>

我希望每个源文件都有一个可执行文件,例如 PGSample.cs将被编译成 PGSample.exe等我将如何实现这一目标?

最佳答案

恐怕每个 csproj 只能有一个输出,但是有一些技巧可以更轻松地管理多个项目。

您可以将常见的build设置放入名为 Directory.build.props 的文件中。在根项目文件夹中,例如:

<Project>
<PropertyGroup>
<Authors>Your name here</Authors>
<Company>Your company</Company>
<Product>The project name</Product>
<Version>1.6.18</Version>
<PackageLicenseExpression>GPL-3.0-or-later</PackageLicenseExpression>
<!-- e.g. bin/Release_net48/foo_cli/ -->
<OutputPath>$(SolutionDir)bin\$(Configuration)_$(TargetFramework)\$(MSBuildProjectName)</OutputPath>
<TargetFrameworks>net48</TargetFrameworks>
</PropertyGroup>
</Project>

然后,添加一个子目录和最小 csproj每个输出的文件,例如
libfoo/libfoo.csproj : <Project Sdk="Microsoft.NET.Sdk" /> (真的,就是这样!)
foo_cli/foo_cli.csproj :
<?xml version="1.0" encoding="utf-8"?>
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup><OutputType>Exe</OutputType></PropertyGroup>
<ItemGroup><ProjectReference Include="..\libfoo\libfoo.csproj" /></ItemGroup>
</Project>

如果您只有一个库和许多可执行文件,您甚至可以将可执行文件设置添加到 Directory.build.props :
[..]
<PropertyGroup Condition=" $(MSBuildProjectName) != 'libfoo'">
<OutputType>exe</OutputType>
</PropertyGroup>
<ItemGroup Condition=" $(MSBuildProjectName) != 'libfoo'">
<ProjectReference Include="..\libfoo\libfoo.csproj" />
</ItemGroup>

关于c# - 来自单个 DotNet Core 项目配置文件的多个二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58581085/

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