Ответ 1
Добавить System.Dynamic.Runtime и Microsoft.CSharp как зависимостей.
Я пытаюсь использовать переменную dynamic
в основном приложении С#.net, предназначенное для таргетинга .net standard 1.6. (платформа? library? framework? meta-framework?) Я впервые столкнулся с этой проблемой в реальном приложении, но я уменьшил ее до минимального воспроизведения.
{
"version": "1.0.0-*",
"buildOptions": { "emitEntryPoint": true },
"dependencies": { "NETStandard.Library": "1.6.0" },
"frameworks": {
"netstandard1.6": { "imports": "dnxcore50" }
},
"runtimes": { "win10-x64": {} }
}
using System;
public class Program {
public static void Main(string[] args) {
dynamic hello = "hello world";
Console.WriteLine(hello);
}
}
Когда я пытаюсь построить это, я получаю ошибку сборки на Console.WriteLine(hello);
, говоря об этом.
CS0656 Отсутствует компилятор, требуемый член 'Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo.Create'
Можно ли использовать переменные dynamic
в таргетинге на приложение netstandard 1.6? Как?
Добавить System.Dynamic.Runtime и Microsoft.CSharp как зависимостей.
Если вы пишете приложение, а не библиотеку, вы должны использовать Microsoft.NETCore.App
, а не NETStandard.Library
и netcoreapp1.0
, а не netstandard1.6
. Это может решить вашу проблему.
Если вы хотите использовать dynamic
в библиотеке (или приложении, которое не зависит от Microsoft.NETCore.App
), вам нужно добавить Microsoft.CSharp
в качестве зависимости.
Щелкните правой кнопкой мыши проект > Управление пакетами NuGet... > Добавьте следующие два выделенных пакета: