1

我创建的 NuGet 包中的 WinSCP.exe 文件有问题。我在我的项目中引用 WinSCP 如下:

<PackageReference Include="WinSCP" version="5.17.10" />

打包我的 NuGet 包后,将 winscp.exe 复制到 contentFiles 中的包中。当我在其他项目/NuGet 包中引用我的包时,winscp.exe 也会复制到包中。我不喜欢这样,因为我想在包还原时使用参考并下载它(显然)。

但我不知道如何从我的包中排除 .exe。

我试过这个:

    <PackageReference Include="WinSCP" version="5.17.10" >
      <PrivateAssets>none</PrivateAssets>
      <IncludeAssets>all</IncludeAssets>
      <ExcludeAssets>contentFiles;build;runtime;native;analyzers</ExcludeAssets>
    </PackageReference>

这适用于第一个/最低的包,不复制 .exe 并且在 nuspec 中设置引用。但是对于引用 MY 包(在 nuspec 中引用 WinSCP)的更高包,不会恢复 .exe 文件。

据我所知,一种解决方法是为每个使用我的第一个/最低包的包添加,再次使用相同的参考:

    <PackageReference Include="WinSCP" version="5.17.10" >
      <PrivateAssets>none</PrivateAssets>
      <IncludeAssets>all</IncludeAssets>
      <ExcludeAssets>contentFiles;build;runtime;native;analyzers</ExcludeAssets>
    </PackageReference>

但我不认为,这是预期的方式..

我想知道 .nupkg 的 nuget-package 结构是否是问题/行为的根源。Winscp.dll 存储在lib/net40中,但 Winscp.exe 位于tools/文件夹中。微软官方文档没有很好地描述 .exe 文件应该存储在哪里以及“工具”的用途......

谢谢你的帮助。

4

0 回答 0