Ссылка ProjectReference в C#
Крупное приложение делят на проекты: библиотека с доменной логикой и исполняемый клиент. Сборка библиотеки компилируется отдельно, а клиент получает её типы через ссылку ProjectReference в csproj.
Система сборки MSBuild сначала собирает зависимые проекты, затем подставляет путь к их сборкам. Так версии API библиотеки и клиента остаются согласованными в одном solution.
Библиотека Pricing форматирует суммы, клиент ConsoleApp вызывает её из точки входа:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
В библиотеке объявим статический форматтер цены:
namespace Pricing;
public static class MoneyFormat
{
public static string Rubles(int kopecks) => $"{kopecks / 100}.{kopecks % 100:00}";
}
Клиент ссылается на проект библиотеки:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Lib\Pricing.csproj" />
</ItemGroup>
</Project>
Консольный клиент вызывает публичный API связанной библиотеки:
Console.WriteLine(Pricing.MoneyFormat.Rubles(199));
namespace Pricing
{
public static class MoneyFormat
{
public static string Rubles(int kopecks) => $"{kopecks / 100}.{kopecks % 100:00}";
}
}
Цена собрана из 199 копеек. В solution типы библиотеки собираются отдельно; здесь они показаны в одном файле для наглядности.
Добавьте библиотеку Units с методом, переводящим граммы в килограммы (деление на 1000), и выведите результат для массы 2500 г из консольного клиента.