相关疑难解决方法(0)

我们如何在 c++/cli 项目中使用托管 nuget 包

我想在 c++/cli 项目中使用托管 nuget 包。有没有办法做到这一点?

比如我的场景差不多是这样的:

我创建了一个 C# 项目(MainProject)并将 EntityFramework nuget 包添加到该项目中。

我又创建了一个 C# 项目(TestCSProject),并添加了 MainProject 作为对该项目的引用。然后自动在引用entityframework中也添加

我创建了一个 C++/CLI 项目(TestCLIProject),并添加了 MainProject 作为对该项目的引用,以便我想看看是否可以使用实体框架。

但那并没有发生。

所以我想知道如何在 c++/cli 项目中使用托管 nuget 包

c# c++ c++-cli

9
推荐指数
2
解决办法
4428
查看次数

NuGet更新和条件引用

我们的nupkg包包含相同dll的多个版本(x86,x64,AnyCPU),在csproj文件中,在引用中我使用条件引用来根据当前平台集选择特定的dll.因此,我有多个对同一个库的引用(只是不同的平台编译).

这是我的csproj文件的一个片段:

<Reference Include="xxxx" Condition="'$(Platform)'=='x86'">            
   <HintPath>..\..\packages\xxxx.2.7.0.1093\lib\net45\x86\xxxx.dll</HintPath>
</Reference>
<Reference Include="xxxx" Condition="'$(Platform)'=='x64'">
  <HintPath>..\..\packages\xxxx.2.7.0.1093\lib\net45\x64\xxxx.dll</HintPath>
</Reference>
<Reference Include="xxxx" Condition="'$(Platform)'=='AnyCPU'">
  <HintPath>..\..\packages\xxxx.2.7.0.1093\lib\net45\AnyCPU\xxxx.dll</HintPath>
</Reference>
Run Code Online (Sandbox Code Playgroud)

这种结构在MSBuild和Visual Studio中都能很好地工作.

不幸的是,在nuget更新之后,csproj引用搞砸了.这是结果:

<Reference Include="xxxx" Condition="'$(Platform)'=='x86'">
  <HintPath>..\..\packages\xxxx.2.7.0.1093\lib\net45\x86\xxxx.dll</HintPath>
</Reference>
<Reference Include="xxxx" Condition="'$(Platform)'=='x64'">
  <HintPath>..\..\packages\xxxx.2.7.0.1093\lib\net45\x64\xxxx.dll</HintPath>
</Reference>
<Reference Include="xxxx">
  <HintPath>..\..\packages\xxxx.2.7.0.1094\lib\net45\x86\xxxx.dll</HintPath>
</Reference>
Run Code Online (Sandbox Code Playgroud)

所以看起来只有一个引用被更新了...... 条件部分被删除以及列表中的第一个dll被使用了.

不是我所期待的.任何想法如何最好地解决这个问题?任何人在你的csproj中使用带有nuget的条件引用?任何建议将不胜感激!

.net msbuild nuget

6
推荐指数
1
解决办法
1978
查看次数

标签 统计

.net ×1

c# ×1

c++ ×1

c++-cli ×1

msbuild ×1

nuget ×1