如何删除本地 nuget 引用

How to Remove local nuget references

我将领域包添加到我的项目中,它工作正常,但出于某种原因,它还添加了一些我无法删除的无效本地依赖项。我试图从 csproj 文件中手动删除它们,但没有它们的踪迹。我怎样才能摆脱他们?

  1. 右键单击您的项目,select Unload Project
  2. Select卸载的项目,你会看到一个xml文件打开。
  3. 查找包含参考列表的 <ItemGroup>
  4. 删除您不再需要的项目。
  5. 保存文件。右键单击该项目并 Reload 它。

您已在非 sdk 网络框架项目的 csproj 文件中添加 RuntimeIdentifier xml node

这就是原因。你应该注意到 RuntimeIdentifier 适用于新的 sdk net core 跨平台项目而不是你的非 sdk net framework windows 项目。

RuntimeIdentifier 不适用于非 sdk 网络框架项目。

所以 你必须在 csproj 文件中删除这些。

<PropertyGroup>
  <RuntimeIdentifier>osx-x64</RuntimeIdentifier>
</PropertyGroup>

当我删除它时,一切正常。

更新

.

问题出在这里:

C:\Users\xxx\.nuget\packages\realm.1.1\build\Realm.props 然后打开那个文件,你会看到:

您有两点需要注意:

1) NativeReference 适用于 ios 个应用程序而不是 android 个应用程序,实际上,您可以只删除 NativeReference 节点,但对于nuget包的包容性和全面性,不建议删除。

2) NativeReference 无法识别 MSBuild 属性 的值。您不能在其中传递 属性 值。正如 .

首先,其中itemgroup condition在构建的时候确实会被vs根据条件进行处理,但是不构建的时候会忽略条件检查其内容判断是否有效,但是因为你的Android工程一直无法识别nativereference,所以问题一直存在

为了跳过这个检测机制,最好使用choose, when。而在这个场景中,你使用的是Android项目,所以不需要考虑nativereference无法识别属性的问题.

建议一

Realm.props修改为:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <_RealmNugetNativePath Condition="'$(_RealmNugetNativePath)' == ''">$(MSBuildThisFileDirectory)..\native\</_RealmNugetNativePath>
  </PropertyGroup>
<Choose>
<When Condition="'$(TargetFrameworkIdentifier)' == 'Xamarin.iOS'">
<ItemGroup>
 <NativeReference Include="$(_RealmNugetNativePath)ios\universal\realm-wrappers.framework">
      <Kind>Framework</Kind>
      <SmartLink>False</SmartLink>
    </NativeReference>
</ItemGroup>
</When>
<When Condition="'$(TargetFrameworkIdentifier)' == 'Xamarin.Mac'">

 <ItemGroup>
    <NativeReference Include="$(_RealmNugetNativePath)..\runtimes\osx-x64\native\librealm-wrappers.dylib">
      <Kind>Dynamic</Kind>
    </NativeReference>
  </ItemGroup>
</When>
</Choose>
  <ItemGroup Condition="'$(TargetFrameworkIdentifier)' == 'Xamarin.iOS'">
   
    <Content Include="$(_RealmNugetNativePath)ios\Realm.dll.config">
      <Link>Realm.dll.config</Link>
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
  </ItemGroup>
 
  <ItemGroup Condition="'$(TargetFrameworkIdentifier)' == 'MonoAndroid'">
    <AndroidNativeLibrary Include="$(_RealmNugetNativePath)android\armeabi-v7a\librealm-wrappers.so">
      <Link>$(_RealmNugetNativePath)android\armeabi-v7a\librealm-wrappers.so</Link>
    </AndroidNativeLibrary>
    <AndroidNativeLibrary Include="$(_RealmNugetNativePath)android\x86\librealm-wrappers.so">
      <Link>$(_RealmNugetNativePath)android\x86\librealm-wrappers.so</Link>
    </AndroidNativeLibrary>
    <!-- 64bit -->
    <AndroidNativeLibrary Include="$(_RealmNugetNativePath)android\arm64-v8a\librealm-wrappers.so">
      <Link>$(_RealmNugetNativePath)android\arm64-v8a\librealm-wrappers.so</Link>
    </AndroidNativeLibrary>
    <AndroidNativeLibrary Include="$(_RealmNugetNativePath)android\x86_64\librealm-wrappers.so">
      <Link>$(_RealmNugetNativePath)android\x86_64\librealm-wrappers.so</Link>
    </AndroidNativeLibrary>
  </ItemGroup>
  <ItemGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework'">
    <None Include="$(_RealmNugetNativePath)..\runtimes\win-x86\native\realm-wrappers.dll">
      <Link>lib\win32\x86\realm-wrappers.dll</Link>
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Include="$(_RealmNugetNativePath)..\runtimes\win-x64\native\realm-wrappers.dll">
      <Link>lib\win32\x64\realm-wrappers.dll</Link>
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
  </ItemGroup>
</Project>

建议二

2) 如果您进一步使用 IOS 应用程序,您必须尝试这些:

a)删除Realm.props文件下的两个NativeReference节点

b) 然后将这些添加到 ios.csoroj 文件中:

<Choose>
<When Condition="'$(TargetFrameworkIdentifier)' == 'Xamarin.iOS'">

<ItemGroup>
<NativeReference Include="C:\Users\xxx\.nuget\packages\realm.1.1\native\ios\universal\realm-wrappers.framework" Kind="Framework" SmartLink="False">
</NativeReference>

</ItemGroup>
</When>
<When Condition="'$(TargetFrameworkIdentifier)' == 'Xamarin.Mac'">
     <ItemGroup>
<NativeReference Include="C:\Users\xxx\.nuget\packages\realm.1.1\runtimes\osx-x64\native\librealm-wrappers.dylib" Kind="Dynamic">
</NativeReference>
</ItemGroup>
  </When>

</Choose>