Я создал три проекта библиотеки .NET Standard C ++ с Visual Studio 2017 и настройками по умолчанию.
Проекты:
- MainProject
- TimeProject
- Зависимости -> MainProject
- ClockProject
- Зависимости -> TimeProject
Каждый из них должен иметь свой собственный выходной каталог, например:
<OutputPath>C:\Projects\DataControl\Build\MainProject</OutputPath>
<OutputPath>C:\Projects\DataControl\Build\TimeProject</OutputPath>
<OutputPath>C:\Projects\DataControl\Build\ClockProject</OutputPath>
Файлы DLL проекта размещаются в выходных каталогах, но проблема заключается в том, что указанные библиотеки DLL проекта также размещаются в выходном каталоге (TimeProject.dll и MainProject.dll)
Выходные каталоги (Copy Local = true):
- \ Сложение \ MainProject:
- \ Построение \ TimeProject
- MainProject.dll
- TimeProject.dll
- \ Построение \ ClockProject
- MainProject.dll
- TimeProject.dll
- ClockProject.dll
Если я изменил свойство Copy Local
на false, DLL из проекта, на который есть прямая ссылка, исчезнет. Это лучше, но вложенная ссылочная DLL остается -> MainProject.dll в ClockProject.
Выходные каталоги (Copy Local = false):
- \ Сложение \ MainProject:
- \ Построение \ TimeProject
- \ Построение \ ClockProject
- MainProject.dll
- ClockProject.dll
Я хочу не допустить, чтобы ClockProject создавал MainProject.dll в своем выходном каталоге, поскольку MainProject.dll уже существует в выходном каталоге MainProject.
У меня огромный проект, и в этих обстоятельствах у меня в папках проекта много одинаковых DLL. Однако во время запуска моей программы логика также ищет во вложенных папках библиотеки DLL, а затем обнаруживает несколько библиотек одного и того же проекта, что приводит к конфликтам версий. В общем, я хочу сохранить эту логику, поэтому я ищу решение, которое будет генерировать только DLL проекта, а не ссылочные.
Наконец, мой файл csproj. Два других файла проекта выглядят одинаково.
ClockProject.csproj:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<OutputPath>C:\Projects\DataControl\Build\ClockProject</OutputPath>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\TimeProject\TimeProject.csproj">
<Private>false</Private>
</ProjectReference>
</ItemGroup>
</Project>