Sta*_*mpy 6 .net c# build visual-studio .net-standard-2.0
我已经使用Visual Studio 2017和默认设置创建了三个.NET Standard类库C#项目。
项目:
它们每个都必须具有自己的输出目录,例如:
<OutputPath>C:\Projects\DataControl\Build\MainProject</OutputPath>
<OutputPath>C:\Projects\DataControl\Build\TimeProject</OutputPath>
<OutputPath>C:\Projects\DataControl\Build\ClockProject</OutputPath>
Run Code Online (Sandbox Code Playgroud)
项目DLL文件放置在输出目录中,但问题是引用的项目DLL也放置在输出目录中(TimeProject.dll和MainProject.dll)
输出目录(Copy Local = true):
如果将属性更改Copy Local为false,则直接引用的项目中的DLL消失。那就更好了,但是嵌套引用的DLL仍然保留-> ClockProject中的MainProject.dll。
输出目录(Copy Local = false):
我要防止ClockProject在其输出目录中创建MainProject.dll,因为MainProject.dll已存在于MainProject的输出目录中。
我的项目很大,在这种情况下,我的项目文件夹中有很多相同的DLL。但是,在程序启动期间,逻辑还会在子文件夹中搜索DLL,然后找到同一项目的多个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>
Run Code Online (Sandbox Code Playgroud)
我发现以下解决方案:
ClockProject需要MainProject和TimeProject。
如果我仅在ClockProject中引用TimeProject,则它可以工作(因为TimeProject引用MainProject),但是MainProject.dll被复制到我不需要的ClockProject Output文件夹中。
但是,如果我在ClockProject,Main-和TimeProject中都引用了两个项目,并将两者都设置为CopyLocal = false,则只有ClockProject.dll将被复制到ClockProject的Output文件夹中。
| 归档时间: |
|
| 查看次数: |
162 次 |
| 最近记录: |