您可以将 csproj 修改为空实用程序项目吗?

问题描述 投票:0回答:1

我想为实用项目创建一个 .csproj。 该项目没有二进制输出,只是用于将一堆其他项目分组到一个公共依赖项中。

我已经在使用 .csproj 继承和自定义目标,因此我可以轻松地破解文件并且没有 GUI 支持。 有谁有一个可用的“空 .csproj ,可用于仅构建其依赖项?

我不希望人们必须安装 C# Desktop 以外的任何工作负载。 例如,这就是为什么我不使用普通的 C++ 实用程序项目。 显然,我可以构建一些我实际上并不分发的东西,但似乎应该有一个更干净的解决方案。

具体来说,回答所有问我原因的人:

  • 我有一个 DLL,它基本上是一个核心 SDK
  • 我有一堆 DLL,它们是该 SDK 上的插件或模块
  • 我有一些可执行文件,每个文件都不知道插件存在,但当然我希望当我对可执行文件执行“运行”时首先构建它们

所以我将所有插件分组在“所有插件”下,每个插件都需要并链接SDK,每个可执行文件仅依赖于“所有插件”而不链接。 显然它链接了SDK。 效果很好。 只是“所有插件”项目是一个我扔掉的 DLL :) 这看起来很难看。

c# visual-studio csproj
1个回答
0
投票

有一个名为 Microsoft.Build.NoTargets

SDK,它是一个“空”项目。  除了您添加为目标之外,它“不执行任何操作”。

<Project Sdk="Microsoft.Build.NoTargets">

  <PropertyGroup>
    <TargetFramework>net46</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <FilesToCopy Include="files\**" />
  </ItemGroup>

  <Target Name="CopyFiles" BeforeTargets="PrepareForRun">
    <Copy
        SourceFiles="@(FilesToCopy)"
        DestinationFolder="$(OutDir)"
        SkipUnchangedFiles="$(SkipCopyUnchangedFiles)"
        OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)"
        Retries="$(CopyRetryCount)"
        RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)"
        UseHardlinksIfPossible="$(CreateHardLinksForCopyAdditionalFilesIfPossible)"
        UseSymboliclinksIfPossible="$(CreateSymbolicLinksForCopyAdditionalFilesIfPossible)">
      <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
    </Copy>
  </Target>
</Project>
© www.soinside.com 2019 - 2024. All rights reserved.