使用该 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 包时,我可以看到文件在那里
但是它没有复制到输出文件夹。
事实上,正确的是当我 运行 Build
从 Visual 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
.
下的缓存文件
除了,还有.
我有一些项目,其中有一些 exe 作为“依赖项”,我将该项目构建为 .csproj
文件
文件如下所示:
<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 包时,我可以看到文件在那里
但是它没有复制到输出文件夹。
事实上,正确的是当我 运行 Build
从 Visual 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
.
除了,还有