[英]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.