#visual-studio #f#
Вопрос:
Я создаю плагин, который должен зависеть от системных библиотек его загрузчика в 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>
Это правильно предотвращает работу с фреймами.dll не будет записана, однако nuget FSFramework также подключается FSharp.Core.dll который все равно записывается в вывод. Если я попытаюсь поместить ссылку на пакет непосредственно в FSsharp.Core.dll В итоге я получаю это дважды и ошибку сценария сборки.
Комментарии:
1. Является ли эта проблема специфичной для работы с фреймами? Я попробовал это с другими пакетами Nuget на .NET 5.0, и у меня не возникло никаких проблем. (FSFramework-это только .NET 6.0, которого у меня еще нет.)
Ответ №1:
Я играл с плагинами на .NET 6.0, но я не уверен, что смогу точно воспроизвести то, что вы видите. У вас есть репозиторий GitHub, который демонстрирует проблему?
Один небольшой совет, который кажется важным, состоит в том, чтобы включить в свой PropertyGroup
:
<EnableDynamicLoading>true</EnableDynamicLoading>
Смотрите эту статью для получения дополнительной информации.
Вот полное .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="..PluginBasePluginBase.csproj">
<Private>false</Private>
<ExcludeAssets>runtime</ExcludeAssets>
</ProjectReference>
</ItemGroup>
</Project>
Комментарии:
1. Спасибо. Я перешел к чему-то другому, но когда я вернусь к этому проекту, я попробую это!