我创建的 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 文件应该存储在哪里以及“工具”的用途......
谢谢你的帮助。