我正在创建一个用C ++ / CLI编写的NuGet包。它充当C#和本机C ++之间的互操作。
生成的DLL具有托管表面区域和本机implib表面区域。
Visual Studio只喜欢使用NuGet包中的单个引用程序集,而不是每个接收项目的Debug或Release配置使用不同的引用程序集。
我希望NuGet包中使用的引用程序集根据配置而不同,这样我就可以在nupkg中嵌入Debug和Release DLL,并将Release C#builds绑定到Release DLL并将Debug C#builds绑定到调试DLL。
这是我的要求,因为看起来std C ++类(例如std :: string)的本机二进制对象布局在我的Debug和Release版本之间是不同的。
DLL的Release编译无法与程序其余部分的Debug编译一起使用。我在DLL的Program编译和程序的Release编译中遇到了类似的失败。
我能在这做什么吗?我已经做了一些探索,将引用元素放在NuGet .props或.targets文件中,并使用$(Configuration)属性,但我还没有把它用于工作。
答案 0 :(得分:1)
我可能刚刚开始工作,虽然我承认我不确定这会转化为真实世界的项目有多好。
我的互操作NuGet包:
<ItemGroup><Reference>
到DLL的.props文件以及<HintPath>
到$(MSBuildThisFileDirectory)..\lib\native\$(Configuration)\[DLL Name]
这能够成功绑定到Debug或Release NuGet DLL,具体取决于构建配置。