使用该 nuget 包将 nuget 包内容文件(.exe 类型)复制到项目的输出目录

Copy nuget package content file (of type .exe) to output directory of project using that nuget package

我有一些项目,其中有一些 exe 作为“依赖项”,我将该项目构建为 .csproj 文件

的 nuget 包

文件如下所示:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <Nullable>enable</Nullable>
    <LangVersion>latest</LangVersion>
    <Version>1.1.2</Version>
    <PackageId>MyLib</PackageId>
    <Authors>me</Authors>
    <Company>me</Company>
  </PropertyGroup>

  <ItemGroup>
    <None Remove="CliInterfaceBitInterface.exe" />
  </ItemGroup>

  <ItemGroup>
    <Content Include="CliInterfaceBitInterface.exe">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="3.3.0">
      <PrivateAssets>analyzers;build</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
  </ItemGroup>

</Project>

当我在其他一些解决方案中使用该 nuget 包时,我可以看到文件在那里

但是它没有复制到输出文件夹。 事实上,正确的是当我 运行 BuildVisual Studio 项目时,但我在我的 CI/CD 环境中使用 dotnet build 命令并且它没有被复制当我 运行 该命令时输出。

编辑: 我还注意到该 exe 的位置在 %USERPROFILE%.nuget 文件夹中 还有我的 csproj 文件(来自其他解决方案,它引用了那个 nuget 包)有硬编码路径,里面有我的用户名。我不确定为什么会这样,但不喜欢那样

而不是,尝试使用这个

<PackageCopyToOutput>true</PackageCopyToOutput>

csproj文件中添加这些:

<ItemGroup>
    <Content Include="CliInterfaceBitInterface.exe">
     <PackageCopyToOutput>true</PackageCopyToOutput>
    </Content>
 </ItemGroup>

然后重新打包您的 lib 项目。当您尝试安装这个新发布版本时,请不要忘记 clean nuget caches first 或删除 C:\Users\xxx(current user)\.nuget\packages.

下的缓存文件

除了,还有.