Невозможность создать SDK поставщика услуг F #

#f# #type-providers

#f# #поставщики типов

Вопрос:

Я, наконец, столкнулся с чем-то, с чем, похоже, никто другой не сталкивался (по крайней мере, из того, что я могу сказать). Я пытаюсь создать поставщика типов F #, используя TypeProviders.SDK.

Как только я создаю решение, я получаю сообщение об ошибке: «FS0810, свойство ‘CultureName’ не может быть установлено, LemonadeProvider paket-files fsprojects FSharp.Поставщики типов.SDK src ProvidedTypes.fs» в строке 2090 и снова в 3162 в проекте разработки решения.

Я не думаю, что это полезно, но тестовый проект также завершается неудачей, поскольку он не может найти LemonadeProvider.Runtime.dll . Я предполагаю, что это будет создано, когда проект среды выполнения будет успешно собран.

PS: На данный момент я просто пытаюсь создать предоставленный шаблон, я не менял код и ничего к нему не добавлял. Следовательно, я не прикрепил никакого кода, но, пожалуйста, не стесняйтесь спрашивать об этом.

Комментарии:

1. Как вы его создаете? VisualStudio, VS Code, командная строка …? Прежде чем что-либо можно будет построить, вам нужно выполнить «восстановление dotnet tool», за которым следует «обновление пакета dotnet». Вы выполнили эти шаги?

2. Я пытался создать его как в командной строке, так и в VisualStudio. И да, я выполнил оба шага «восстановление с помощью инструмента dotnet» и «обновление пакета dotnet».

3. вы решили это?

Ответ №1:

Соответствующая проблема https://github.com/fsprojects/FSharp .TypeProviders.SDK/issues/353

Известные обходные пути

Измените минимальную цель на net461. Замените все экземпляры net45 на net461, за исключением в netfx.props, где вы можете просто удалить строки, ссылающиеся на net45 * framework (я подозреваю, что удаление этих строк, строго говоря, не обязательно).


Я сделал это обходное решение, но теперь сталкиваюсь с такими ошибками: (например, 2000 из них)

C:UsersusersourcereposHelloWorldProviderpaket-filesfsprojectsFSharp .Поставщики типов.SDK src ProvidedTypes.fs(34,7): ошибка FS0074: тип, на который ссылается ‘System.Атрибут’ определен в сборке, на которую нет ссылки. Необходимо добавить ссылку на сборку «netstandard». [C:UsersusersourcereposHelloWorldProvidersrcHelloWorldProvider .DesignTime HelloWorldProvider.DesignTime.fsproj]

Ответ №2:

Я обнаружил, что проблема связана с файлами ProvidedTypes.fs и ProvidedTypes.fsi, созданными SDK.

Проблема была решена для меня, когда я заменил файлы на файлы, найденные в ‘SDK-dsyme-patch-7‘, которые обеспечивали совместимость для разных .Сетевые среды, которые отсутствовали в исходном SDK. Могут быть и другие различия, но это то, что я нашел, и это решило проблему для меня. Файлы можно найти в разделе ‘/ src /’ в исправлении dsyme.

Код, на который я ссылаюсь, выглядит следующим образом и был добавлен дважды в файл ProvidedTypes.fs:

 #if NETSTANDARD
            asmName.CultureName <- System.Globalization.CultureInfo.InvariantCulture.Name
    #else
            asmName.CultureInfo <- System.Globalization.CultureInfo.InvariantCulture
    #endif
            asmName
 

Я не знаю, есть ли новый SDK, который решил проблему. Но в то время, когда был задан вопрос, это то, что сработало для меня.