C# 来自单个DotNet核心项目配置文件的多个二进制文件
我有一系列CLI实用程序的代码,用于测试/展示网络库。该库被编译成一个程序集-DotNet核心DLL 我有几个CLI示例演示如何使用该库,例如,一个搜索使用分页功能,另一个搜索返回所有内容等。基本上,每个都是一个简短的独立CLI程序 我有CS源文件和针对dotnet core的csproj文件。以下是配置:C# 来自单个DotNet核心项目配置文件的多个二进制文件,c#,.net-core,csproj,C#,.net Core,Csproj,我有一系列CLI实用程序的代码,用于测试/展示网络库。该库被编译成一个程序集-DotNet核心DLL 我有几个CLI示例演示如何使用该库,例如,一个搜索使用分页功能,另一个搜索返回所有内容等。基本上,每个都是一个简短的独立CLI程序 我有CS源文件和针对dotnet core的csproj文件。以下是配置: <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</O
<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>
Exe
netcoreapp2.1
恐怕每个csproj只能有一个输出,但有一些技巧可以更轻松地管理多个项目
您可以将通用生成设置放入根项目文件夹中名为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>
如果您只有一个库和许多可执行文件,您甚至可以将可执行设置添加到目录.build.props
:
[..]
<PropertyGroup Condition=" $(MSBuildProjectName) != 'libfoo'">
<OutputType>exe</OutputType>
</PropertyGroup>
<ItemGroup Condition=" $(MSBuildProjectName) != 'libfoo'">
<ProjectReference Include="..\libfoo\libfoo.csproj" />
</ItemGroup>
[…]
exe
[..]
<PropertyGroup Condition=" $(MSBuildProjectName) != 'libfoo'">
<OutputType>exe</OutputType>
</PropertyGroup>
<ItemGroup Condition=" $(MSBuildProjectName) != 'libfoo'">
<ProjectReference Include="..\libfoo\libfoo.csproj" />
</ItemGroup>