【发布时间】:2021-05-14 11:04:42
【问题描述】:
我有三个项目。 A B C. A 参考 B,B 参考 C。 我确实在项目 A 上打包。
我将此添加到 A.csproj 以将其他 dll 复制到 nuget:
<PropertyGroup>
<TargetsForTfmSpecificContentInPackage>$(TargetsForTfmSpecificContentInPackage);SetCustomFilesToPackage</TargetsForTfmSpecificContentInPackage>
</PropertyGroup>
<Target Name="SetCustomFilesToPackage">
<ItemGroup>
<TfmSpecificPackageFile Include="bin\$(Configuration)\$(TargetFramework)\*.dll">
<PackagePath>lib/net461</PackagePath>
</TfmSpecificPackageFile>
<TfmSpecificPackageFile Include="bin\$(Configuration)\$(TargetFramework)\**\*.dll">
<PackagePath>lib/net461</PackagePath>
</TfmSpecificPackageFile>
</ItemGroup>
</Target>
当我浏览 nuget 时,所有 dll 文件都在其中。但是当我在其他项目中使用这个 nuget 时,缺少整个类或项目 B 和 C 中的某些方法。
为什么会这样?
编辑:
我还注意到,当我打开一个 nuget 时,库“B”落入了 Dependencies。当我输入存在于“B”和“C”的类时,它们的版本为 1.0.9,尽管我目前没有对这些项目进行版本控制。项目“A”的版本为 1.0.48。
【问题讨论】:
-
你可以这样做
<ItemGroup> <Content Include="<dll path>"> <Pack>true</Pack> <PackagePath>lib\$(TargetFramework)</PackagePath> </Content> </ItemGroup> -
查看工作项目。 dll位于文件夹lib中。您需要使用相同的文件夹或将包路径更改为其他项目可以访问的文件夹。
标签: c# wpf visual-studio pack