Do tNet Core 3.1 - несколько проектов с общим sr c, obj и bin - PullRequest
0 голосов
/ 16 февраля 2020

У меня следующая структура папок (в соответствии с функционально-ориентированной организацией):

Solution
  bin
  obj
  src
    Module1
      Shared.cs
    Module2
      Shared.cs
    Module3
      Shared.cs
    Server
      Program.cs
      Startup.cs
    Database
      Program.cs
  Solution.sln
  Server.csproj
  Database.csproj

Для проекта Server я использую Microsoft.NET.Sdk и Microsoft.NET.Sdk.Web для Database.

Вот фактический Server.csproj:

<Project>
    <PropertyGroup>
        <TargetFramework>NetCoreApp3.1</TargetFramework>
        <Configuration Condition=" '$(Configuration)' == '' ">Development</Configuration>
        <EnvironmentName>$(Configuration)</EnvironmentName>
        <BaseOutputPath>bin/$(MSBuildProjectName)</BaseOutputPath>
        <OutputPath>$(BaseOutputPath)/$(Configuration)</OutputPath>
        <BaseIntermediateOutputPath>obj/$(MSBuildProjectName)</BaseIntermediateOutputPath>
        <IntermediateOutputPath>$(BaseIntermediateOutputPath)/$(Configuration)</IntermediateOutputPath>
        <AppendTargetFrameworkToOutputPath>False</AppendTargetFrameworkToOutputPath>
        <AppendRuntimeIdentifierToOutputPath>False</AppendRuntimeIdentifierToOutputPath>
        <EnableDefaultContentItems>False</EnableDefaultContentItems>
        <Nullable>Enable</Nullable>
        <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
        <RootNamespace>OeMis.Server</RootNamespace>
        <StartupObject>OeMis.Server.ServerEntry</StartupObject>
    </PropertyGroup>

    <ItemGroup>
        <Content Include="Configuration.$(Configuration).json" ExcludeFromSingleFile="True" CopyToOutputDirectory="PreserveNewest" CopyToPublishDirectory="PreserveNewest"/>
        <PackageReference Include="Dapper" Version="2.0.30"/>
        <PackageReference Include="HotChocolate" Version="11.0.0-preview.95"/>
        <PackageReference Include="HotChocolate.AspNetCore" Version="11.0.0-preview.95"/>
        <PackageReference Include="HotChocolate.AspNetCore.Authorization" Version="11.0.0-preview.95"/>
        <PackageReference Include="HotChocolate.AspNetCore.Playground" Version="11.0.0-preview.95"/>
        <PackageReference Include="Microsoft.Data.SqlClient" Version="2.0.0-preview1.20021.1"/>
    </ItemGroup>

    <Import Sdk="Microsoft.NET.Sdk.Web" Project="Sdk.props"/>
    <Import Sdk="Microsoft.NET.Sdk.Web" Project="Sdk.targets"/>
</Project>

А вот Database.csproj:

<Project>
    <PropertyGroup>
        <TargetFramework>NetCoreApp3.1</TargetFramework>
        <Configuration Condition=" '$(Configuration)' == '' ">Development</Configuration>
        <EnvironmentName>$(Configuration)</EnvironmentName>
        <OutputType>Exe</OutputType>
        <BaseOutputPath>bin/$(MSBuildProjectName)</BaseOutputPath>
        <OutputPath>$(BaseOutputPath)/$(Configuration)</OutputPath>
        <BaseIntermediateOutputPath>obj/$(MSBuildProjectName)</BaseIntermediateOutputPath>
        <IntermediateOutputPath>$(BaseIntermediateOutputPath)/$(Configuration)</IntermediateOutputPath>
        <AppendTargetFrameworkToOutputPath>False</AppendTargetFrameworkToOutputPath>
        <AppendRuntimeIdentifierToOutputPath>False</AppendRuntimeIdentifierToOutputPath>
        <EnableDefaultContentItems>False</EnableDefaultContentItems>
        <Nullable>Enable</Nullable>
        <RootNamespace>OeMis.Database</RootNamespace>
        <StartupObject>OeMis.Database.DatabaseEntry</StartupObject>
    </PropertyGroup>

    <ItemGroup>
        <Content Include="Configuration.$(Configuration).json" ExcludeFromSingleFile="True" CopyToOutputDirectory="PreserveNewest" CopyToPublishDirectory="PreserveNewest"/>
        <PackageReference Include="Dapper" Version="2.0.30"/>
        <PackageReference Include="Microsoft.Data.SqlClient" Version="2.0.0-preview1.20021.1"/>
        <PackageReference Include="Bogus" Version="29.0.1"/>
    </ItemGroup>

    <Import Sdk="Microsoft.NET.Sdk" Project="Sdk.props"/>
    <Import Sdk="Microsoft.NET.Sdk" Project="Sdk.targets"/>
</Project>

Я всегда получаю ошибки в src/Server/Program.cs, как будто Database.csproj пытается справиться с этим. Ошибки связаны с отсутствующими ссылочными классами в Microsoft.NET.Sdk.Web.

Полный проект можно найти на GitHub

1 Ответ

0 голосов
/ 16 февраля 2020

Это действительно имеет смысл. Вы пытаетесь создать одни и те же исходные файлы с разными зависимостями.

Мой совет - извлечь общие и общие элементы из обоих и добавить их в новый проект с именем shared (предпочтительно в. Net standard) и ссылки на библиотеки в обоих ваших проектах.

Создание библиотеки классов для. net руководство по ядру здесь

TL; DL;

  1. Создание решения и клиентского приложения.
  2. Создание проекта библиотеки классов.
  3. Добавление функциональности библиотеки классов.
  4. Настройки.
  5. Сборка.
  6. Добавление справочника библиотеки классов.
  7. Импорт пространства имен.
  8. Функции вызова.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...