繁体   English   中英

将 nuget package 内容文件(类型为.exe)复制到使用该 nuget package 的项目的 output 目录

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

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

文件看起来像这样:

<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="CliInterface\32BitInterface.exe" />
  </ItemGroup>

  <ItemGroup>
    <Content Include="CliInterface\32BitInterface.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 package 时,我可以看到文件在那里在此处输入图像描述

但是它不会复制到 output 文件夹。 事实上,正确的是,当我从Visual Studio运行Build项目时,但我在我的CI/CD环境中使用do.net build命令,并且当我运行该命令时它没有被复制到 output。

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

相反,尝试使用这个

<PackageCopyToOutput>true</PackageCopyToOutput>

csproj文件中添加这些:

<ItemGroup>
    <Content Include="CliInterface\32BitInterface.exe">
     <PackageCopyToOutput>true</PackageCopyToOutput>
    </Content>
 </ItemGroup>

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

此外,这也是一个类似的问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM