Наконец-то я наткнулся на то, с чем, похоже, никто не сталкивался (по крайней мере, насколько я могу судить). Я пытаюсь создать провайдер типов F#, используя TypeProviders.SDK.
Как только я создаю решение, я получаю сообщение об ошибке: «FS0810, свойство «CultureName» не может быть установлено, \LemonadeProvider\packet-files\fsprojects\FSharp.TypeProviders.SDK\src\ProvidedTypes.fs" в строке 2090 и снова в 3162 в проекте времени разработки решения.
Я не думаю, что это полезно, но проект Test также не работает, так как не может найти LemonadeProvider.Runtime.dll. Я предполагаю, что это будет создано, когда проект Runtime будет успешно построен.
PS: На данный момент я просто пытаюсь создать предоставленный шаблон, я не менял код и ничего не добавлял в него. Поэтому я не прикрепил никакого кода, но, пожалуйста, не стесняйтесь спрашивать его.
Я пытался создать его как в командной строке, так и в VisualStudio. И да, я выполнил шаги «восстановление инструмента dotnet» и «обновление пакета dotnet».
ты решил это?
Соответствующая проблема https://github.com/fsprojects/FSharp.TypeProviders.SDK/issues/353
Измените минимальную цель на net461. Замените все экземпляры net45 на net461, за исключением netfx.props, где вы можете просто удалить строки, ссылающиеся на фреймворки net45* (я подозреваю, что удаление этих строк, строго говоря, не обязательно).
Я сделал это обходным путем, но теперь сталкиваюсь с такими ошибками: (например, 2000 из них)
C:\Users\user\source\repos\HelloWorldProvider\packet-files\fsprojects\FSharp.TypeProviders.SDK\src\ProvidedTypes.fs(34,7): ошибка FS0074: Тип, на который ссылается System.Attribute, определен в сборке, на которую нет ссылок. Вы должны добавить ссылку на сборку «netstandard». [C:\Users\user\source\repos\HelloWorldProvider\src\HelloWorldProvider.DesignTime\HelloWorldProvider.DesignTime.fsproj]
Я обнаружил, что проблема связана с файлами ProvidedTypes.fs и ProvidedTypes.fsi, созданными SDK.
Проблема была решена для меня, когда я заменил файлы на файлы, найденные в «SDK-dsyme-patch-7», что обеспечило совместимость с различными средами .Net, отсутствовавшую в исходном SDK. Могут быть и другие отличия, но это то, что я нашел, и это решило проблему для меня. Файлы можно найти в '/src/' в патче dsyme.
Код, о котором я говорю, выглядит следующим образом и был дважды добавлен в ProvidedTypes.fs:
#if NETSTANDARD
asmName.CultureName <- System.Globalization.CultureInfo.InvariantCulture.Name
#else
asmName.CultureInfo <- System.Globalization.CultureInfo.InvariantCulture
#endif
asmName
Я не знаю, есть ли новый SDK, который решил проблему. Но в то время, когда был задан вопрос, это то, что сработало для меня.
Как вы его строите? VisualStudio, VS Code, командная строка...? Прежде чем что-либо можно будет построить, вам нужно выполнить «восстановление инструмента dotnet», а затем «обновление пакета dotnet». Вы выполнили эти шаги?