【问题标题】:How do I exclude all nuget sub-packages from output in a vsproject如何从 vsproject 的输出中排除所有 nuget 子包
【发布时间】:2021-10-20 00:29:33
【问题描述】:

我正在构建一个插件,它应该依赖于 F# 中的加载器系统库。

In my vsproject I have the following:

    <ItemGroup>
        <PackageReference Include="FSFramework" Version="1.0.0-preview-1">
            <ExcludeAssets>runtime</ExcludeAssets>
        </PackageReference>
      
        <PackageReference Include="Veldrid" Version="4.8.0" />
        <PackageReference Include="Veldrid.StartupUtilities" Version="4.8.0" />
    </ItemGroup>

这正确地防止了 FSFramework.dll 被写出,但是 FSFramework nuget 也会拉入 FSharp.Core.dll,它仍然会被写入输出。如果我尝试将 PackageReference 直接放到 FSsharp.Core.dll 中,我最终会遇到两次并出现构建脚本错误。

【问题讨论】:

  • 这个问题是 FSFramework 特有的吗?我在 .NET 5.0 上使用其他 Nuget 包进行了尝试,没有任何问题。 (FSFramework 只是 .NET 6.0,我还没有。)

标签: visual-studio f#


【解决方案1】:

我一直在使用 .NET 6.0 上的插件,但我不确定我能否准确重现您所看到的内容。你有 GitHub 代码库来演示这个问题吗?

似乎很重要的一点建议是在您的PropertyGroup 中包含以下元素:

<EnableDynamicLoading>true</EnableDynamicLoading>

请参阅this article 了解更多信息。

这是适用于我的插件的完整 .fsproj

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <GenerateDocumentationFile>true</GenerateDocumentationFile>
    <WarnOn>3390;$(WarnOn)</WarnOn>
    <EnableDynamicLoading>true</EnableDynamicLoading>
  </PropertyGroup>

  <ItemGroup>
    <Compile Include="HelloCommand.fs" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="FSFramework" Version="1.0.0-preview-1">
      <ExcludeAssets>runtime</ExcludeAssets>
    </PackageReference>
  </ItemGroup>

  <ItemGroup>
      <ProjectReference Include="..\PluginBase\PluginBase.csproj">
          <Private>false</Private>
          <ExcludeAssets>runtime</ExcludeAssets>
      </ProjectReference>
  </ItemGroup>

</Project>

【讨论】:

  • 谢谢。我继续做其他事情,但当我回到这个项目时,我会试试这个!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-18
  • 2013-01-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多