Вопросы по тегу: c#

(488)

Отлов исключений с помощью «поймать, когда»

Я обнаружил эту новую функцию в C#, которая позволяет обработчику catch выполняться при выполнении определенного условия.int i = 0; try { throw new ArgumentNullException(nameof(i)); } catch (ArgumentNullException e) when (i == 1) { Console.WriteLine("Caught Argument Null Exception"); } Я пытаюсь понять, когда это может быть полезно.Одним из сценариев может быть что-то вроде этого:try { DatabaseUpdate() } catch (SQLException e) when (driver == "MySQL") { //MySQL specific error handling and wrapping up the exception } catch (SQLException e) when (driver == "Oracle") { //Oracle specific error handling and wrapping up of exception } .. , но это снова то, что я могу сделать в одном и том же обработчике и делегировать его различным методам в зависимости от типа драйвера. Делает ли это код более понятным? Возможно, нет.Другой сценарий, который я могу придумать, выглядит примерно так:try { SomeOperation(); } catch(SomeException e) when (Condition == true) { //some specific error handling that this layer can handle } catch (Exception e) //catchall { throw; } Опять же, это то, что я могу сделать так:try { SomeOperation(); } catch(SomeException e) { if (condition == true) { //some specific error handling that this layer can handle } else throw; } Ускоряет ли использование функции «поймать, когда» обработку исключений, поскольку обработчик как таковой пропускается, а раскручивание стека может происходить намного раньше по сравнению с обработкой конкретных вариантов использования в обработчике? Существуют ли какие-либо конкретные варианты использования, которые лучше подходят для этой функции, которые люди могут затем принять в качестве хорошей практики?
M

MS Srikkanth

5 лет назад

Ответов: 3

Как правильно использовать std::string в UTF-8 на С++?

Моя платформа — Mac. Я новичок в C++ и работаю над личным проектом, который обрабатывает китайский и английский языки. UTF-8 является предпочтительной кодировкой для этого проекта.Я читал несколько сообщений на Stack Overflow, и многие из них предлагают использовать std::string при работе с UTF-8 и избегать wchar_t, так как char8_t* не существует. 100007* прямо сейчас для UTF-8.Однако ни один из них не говорит о том, как правильно работать с такими функциями, как str[i], std::string::size(), std:: string::find_first_of() или std::regex, так как эти функции обычно возвращают неожиданные результаты при работе с UTF-8.Должен ли я использовать std::string или переключиться на std::wstring? Если я должен остаться с std::string, как лучше всего справиться с вышеуказанными проблемами?
S

Saddle Point

4 года назад

Ответов: 5

как выполнить модульное тестирование основного приложения asp.net с внедрением зависимостей конструктора

У меня есть основное приложение asp.net, которое использует внедрение зависимостей, определенное в классе startup.cs приложения: public void ConfigureServices(IServiceCollection services) { services.AddDbContext(options => options.UseSqlServer(Configuration["Data:FotballConnection:DefaultConnection"])); // Repositories services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddScoped(); // Services services.AddScoped(); services.AddScoped(); // new repos services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddScoped(); Это позволяет что-то вроде этого: [Route("api/[controller]")] public class MatchController : AuthorizedController { private readonly IMatchService _matchService; private readonly IMatchRepository _matchRepository; private readonly IMatchBetRepository _matchBetRepository; private readonly IUserRepository _userRepository; private readonly ILoggingRepository _loggingRepository; public MatchController(IMatchService matchService, IMatchRepository matchRepository, IMatchBetRepository matchBetRepository, ILoggingRepository loggingRepository, IUserRepository userRepository) { _matchService = matchService; _matchRepository = matchRepository; _matchBetRepository = matchBetRepository; _userRepository = userRepository; _loggingRepository = loggingRepository; } Это очень аккуратно. Но становится проблемой, когда я хочу провести модульное тестирование. Потому что в моей тестовой библиотеке нет файла startup.cs, в котором я настраиваю внедрение зависимостей. Таким образом, класс с этими интерфейсами в качестве параметров будет просто нулевым.namespace TestLibrary { public class FootballAPIService { private readonly IMatchRepository _matchRepository; private readonly ITeamRepository _teamRepository; public FootballAPIService(IMatchRepository matchRepository, ITeamRepository teamRepository) { _matchRepository = matchRepository; _teamRepository = teamRepository; В приведенном выше коде в тестовой библиотеке _matchRepository и _teamRepositoryбудут просто null. :(Могу ли я сделать что-то вроде ConfigureServices, где я определяю внедрение зависимостей в моем проекте тестовой библиотеки?
g

ganjan

6 лет назад

Ответов: 8

Есть ли причина не использовать глобальные лямбда-выражения?

У нас была функция, которая использовала внутреннюю лямбду без захвата, например:void foo() { auto bar = [](int a, int b){ return a + b; } // code using bar(x,y) a bunch of times } Теперь функции, реализованные лямбдой, стали нужны в другом месте, поэтому я собираюсь поднять лямбду из foo() в глобальную область/область пространства имен. Я могу либо оставить его как лямбду, сделав его опцией копирования и вставки, либо изменить его на правильную функцию:auto bar = [](int a, int b){ return a + b; } // option 1 int bar(int a, int b){ return a + b; } // option 2 void foo() { // code using bar(x,y) a bunch of times } Изменить его на правильную функцию тривиально, но это заставило меня задуматься, есть ли какая-то причина не оставить его как лямбду? Есть ли причина не использовать везде лямбда-выражения вместо "обычных" глобальных функций?
B

Baruch

2 года назад

Ответов: 6

Почему нет поддержки конкатенации std::string и std::string_view?

Начиная с C++17, у нас есть std::string_view, облегченное представление непрерывной последовательности символов, позволяющее избежать ненужного копирования данных. Вместо параметра const std::string& теперь часто рекомендуется использовать std::string_view.Однако быстро обнаруживается, что переключение с const std::string& на std::string_view ломает код, использующий конкатенацию строк, поскольку конкатенация не поддерживается. std::string и std::string_view:std::string{"abc"} + std::string_view{"def"}; // ill-formed (fails to compile) std::string_view{"abc"} + std::string{"def"}; // ill-formed (fails to compile) Почему в стандарте нет поддержки конкатенации std::string и std::string_view?
s

s3rvac

5 лет назад

Ответов: 1

Можно ли упростить (x == 0 || x == 1) в одну операцию?

Итак, я пытался записать n-е число в последовательности Фибоначчи в максимально компактной функции:public uint fibn ( uint N ) { return (N == 0 || N == 1) ? 1 : fibn(N-1) + fibn(N-2); } Но мне интересно, смогу ли я сделать это еще более компактным и эффективным, изменив (N == 0 || N == 1) в одно сравнение. Есть ли какая-то причудливая операция сдвига битов, которая может это сделать?
u

user6048670

6 лет назад

Ответов: 14

ASP.NET Core Identity — получить текущего пользователя

Чтобы получить текущего пользователя в MVC5, нам нужно было сделать следующее:using Microsoft.AspNet.Identity; [Authorize] public IHttpActionResult DoSomething() { string currentUserId = User.Identity.GetUserId(); } Теперь с ASP.NET Core я думал, что это должно работать, но выдает ошибку.using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Http; private readonly UserManager _userManager; [HttpPost] [Authorize] public async Task StartSession() { var curUser = await _userManager.GetUserAsync(HttpContext.User); } Есть идеи?РЕДАКТИРОВАТЬ: Ответ Джерардо идет по плану, но для получения фактического «идентификатора» пользователя это, похоже, работает:ClaimsPrincipal currentUser = this.User; var currentUserID = currentUser.FindFirst(ClaimTypes.NameIdentifier).Value;
j

jbraun

5 лет назад

Ответов: 7

Может ли цикл for внутри цикла for использовать одно и то же имя переменной счетчика?

Можно ли использовать одну и ту же переменную-счетчик для цикла for внутри цикла for?Или переменные будут влиять друг на друга? Должен ли следующий код использовать другую переменную для второго цикла, например j, или i подойдет?for(int i = 0; i
U

Uclydde

3 года назад

Ответов: 13

Этот исходный код включает строку в C. Как он это делает?

Я читаю какой-то код эмулятора и наткнулся на что-то действительно странное:switch (reg){ case 'eax': /* and so on*/ } Как это возможно? Я думал, что вы можете только переключить на целочисленные типы. Происходит какой-то обман с макросами?
I

Ian Colton

4 года назад

Ответов: 4

В чем разница между .Wait() и .GetAwaiter().GetResult()?

Мой метод возвращает Задание. Я хочу подождать, пока он не закончится. Что я должен использовать .Wait() или .GetAwaiter().GetResult()? В чем между ними разница?
u

user6011767

6 лет назад

Ответов: 1

Замена WebUtility.HtmlDecode в .NET Core

Мне нужно декодировать символы HTML в .NET Core (MVC6). Похоже, что в .NET Core нет функции WebUtility.HtmlDecode, которую раньше все использовали для этой цели. Существует ли замена в .NET Core?
s

sibvic

6 лет назад

Ответов: 6

ASP.NET Core 3.0 System.Text.Json Сериализация случая верблюда

В проекте веб-API ASP.NET Core 3.0, как указать System.Text.Json параметры сериализации для автоматической сериализации/десериализации свойств Pascal Case в Camel Case и наоборот?Дана модель со свойствами Pascal Case, такими как:public class Person { public string Firstname { get; set; } public string Lastname { get; set; } } И код для использования System.Text.Json для десериализации строки JSON до типа Person class:var json = "{\"firstname\":\"John\",\"lastname\":\"Smith\"}"; var person = JsonSerializer.Deserialize(json); Десериализация невозможна, если JsonPropertyName не используется с каждым свойством, например:public class Person { [JsonPropertyName("firstname")] public string Firstname { get; set; } [JsonPropertyName("lastname")] public string Lastname { get; set; } } Я попробовал следующее в startup.cs, но это не помогло с точки зрения необходимости JsonPropertyName:services.AddMvc().AddJsonOptions(options => { options.JsonSerializerOptions.DictionaryKeyPolicy = JsonNamingPolicy.CamelCase; options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase; }); // also the following given it's a Web API project services.AddControllers().AddJsonOptions(options => { options.JsonSerializerOptions.DictionaryKeyPolicy = JsonNamingPolicy.CamelCase; options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase; }); Как настроить сериализацию/десериализацию Camel Case в ASP.NET Core 3.0 с использованием нового пространства имен System.Text.Json?Спасибо!
A

Alexander Staroselsky

2 года назад

Ответов: 6

Как получить корневой каталог проекта в ядре asp.net. Directory.GetCurrentDirectory() не работает правильно на Mac

У моего проекта структура папок примерно такая: Проект, Проект/данные Проект/движок Проект/Сервер проект/интерфейс На сервере (работающем в папке Project/Server) я обращаюсь к папке следующим образом:var rootFolder = Directory.GetCurrentDirectory(); rootFolder = rootFolder.Substring(0, rootFolder.IndexOf(@"\Project\", StringComparison.Ordinal) + @"\Project\".Length); PathToData = Path.GetFullPath(Path.Combine(rootFolder, "Data")); var Parser = Parser(); var d = new FileStream(Path.Combine(PathToData, $"{dataFileName}.txt"), FileMode.Open); var fs = new StreamReader(d, Encoding.UTF8); На моем компьютере с Windows этот код работает нормально, так как Directory.GetCurrentDirectory() ссылается на текущую папку и делаетrootFolder.Substring(0, rootFolder.IndexOf(@"\Project\", StringComparison.Ordinal) + @"\Project\".Length); дает мне корневую папку проекта (а не папки bin или debug). Но когда я запустил его на Mac, он получил «Directory.GetCurrentDirectory()» и отправил меня в /usr//[что-то еще]. Он не относился к папке, в которой лежит мой проект.Как правильно найти относительные пути в моем проекте? Где я должен хранить папку данных таким образом, чтобы она была легко доступна для всех подпроектов в решении, особенно для проекта сервера пустельги? Я предпочитаю не хранить его в папке wwwroot, потому что папка данных поддерживается другим членом команды, и я просто хочу получить доступ к последней версии. Какие у меня есть варианты?
a

akraines

5 лет назад

Ответов: 11

Файл проекта неполный. Ожидаемый импорт отсутствует

После форматирования компьютера я переустановил Vs 2017 V 15.6.3. и установите ASP.Net Core SDK от Microsoft 2.1.4Но когда я создаю новое основное приложение asp, VS завершается с ошибкой "Файл проекта неполный. Отсутствует ожидаемый импорт" Пожалуйста, кто-нибудь может помочь?
M

Majd Albaho

4 года назад

Ответов: 32

Форматирование кода Visual Studio для "{}"

Я на Ubuntu. C++ в коде Visual Studio автоматически линтингует какif (condition == true) { DoStuff(); } Вместо этого я хочу сделать :if (condition == true) { DoStuff(); } Как мне это сделать?Я уже установил расширение C/C++ из магазина.
r

radbrawler

4 года назад

Ответов: 6

Получить код SQL из Entity Framework Core IQueryable<T>

Я использую Entity Framework Core, и мне нужно увидеть, какой код SQL генерируется. В предыдущих версиях Entity Framework я мог использовать следующее:строка sql = ((System.Data.Objects.ObjectQuery)query).ToTraceString(); Где запрос является объектом IQueryable... Но ToTraceString недоступен в EF Core.Как сделать что-то подобное в EF Core?
M

Miguel Moura

6 лет назад

Ответов: 10

Как эффективно получить `string_view` для подстроки `std::string`

Используя http://en.cppreference.com/w/cpp/string/basic_string_view в качестве эталона, я не вижу способа сделать это более элегантно:std::string s = "hello world!"; std::string_view v = s; v = v.substr(6, 5); // "world" Хуже того, наивный подход является ловушкой и оставляет v висячую ссылку на временную:std::string s = "hello world!"; std::string_view v(s.substr(6, 5)); // OOPS! Я кажется, помню что-то вроде дополнения к стандартной библиотеке для возврата подстроки в виде представления:auto v(s.substr_view(6, 5)); Я могу придумать следующие обходные пути:std::string_view(s).substr(6, 5); std::string_view(s.data()+6, 5); // or even "worse": std::string_view(s).remove_prefix(6).remove_suffix(1); Честно говоря, я не думаю, что какие-либо из них очень хороши. Прямо сейчас лучшее, что я могу придумать, это использовать псевдонимы, чтобы просто сделать вещи менее подробными.using sv = std::string_view; sv(s).substr(6, 5);
s

sehe

4 года назад

Ответов: 3

Заменил бы ' :: ' на ' . ' создать двусмысленность в C++?

В C++ оператор :: используется для доступа к классам, функциям и переменным в пространстве имен или классе.Если спецификация языка использовала . вместо :: в тех же случаях, например, при доступе к переменным/методам экземпляра объекта, тогда это могло бы вызвать возможную двусмысленность, которой нет с ::?Учитывая, что C++ не допускает имен переменных, которые также являются именами типов, я не могу придумать случая, когда это могло бы произойти.Пояснение: я не спрашиваю, почему :: было выбрано вместо ., просто если бы это тоже могло сработать?
J

Jimmy R.T.

2 года назад

Ответов: 4

Какова цель одного знака фунта/решетки (#) в отдельной строке препроцессора C/C++?

Я просматривал исходный код библиотек Boost и заметил, что часто встречаются одиночные знаки фунта без прикрепленных к ним директив препроцессора. Я прочитал руководство по препроцессору GCC и руководство по спецификациям и ничего не могу найти об этом.(1) #ifndef BOOST_CONFIG_HPP (2) # include (3) #endif (4) # (5) #if defined(BOOST_HAS_PRAGMA_ONCE) (6) # pragma once (7) #endif В строке 4 после знака решетки ничего нет. Какой эффект это имеет? Определено ли это в спецификации препроцессора C (CPP)?Поскольку Boost является кросс-платформенной библиотекой, я бы предположил, что любой CPP должен правильно ее анализировать. Какой будет эффект/побочный эффект от случайных знаков фунта/решётки по всему коду?
c

callyalater

6 лет назад

Ответов: 3

Можем ли мы писать комментарии в именах переменных?

int main() { i/*nt*/a = 10; return 0; } Если у меня есть указанный выше код и я хочу подсчитать жетоны, это будет 14 или 13 токенов?Можно ли писать комментарий внутри имени переменной? Можно предположить, что int i, int a, int ia определены глобально.
V

Vinita

год назад

Ответов: 5

Какова цель использования союза только с одним членом?

Когда я читал исходный код seastar, я заметил, что существует структура объединения с именем tx_side, которая имеет только один член. Это какой-то хак для решения определенной проблемы?к сведению, я вставляю структуру tx_side ниже:union tx_side { tx_side() {} ~tx_side() {} void init() { new (&a) aa; } struct aa { std::deque pending_fifo; } a; } _tx;
d

daoliker

2 года назад

Ответов: 2

Почему std::is_pod устарел в С++ 20?

std::is_pod, вероятно, будет объявлен устаревшим в C++20. В чем причина такого выбора? Что мне следует использовать вместо std::is_pod, чтобы узнать, действительно ли тип является POD?
s

skypjack

4 года назад

Ответов: 1

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

У меня есть сервисный объект Обновление public bool Update(object original, object modified) { var originalClient = (Client)original; var modifiedClient = (Client)modified; _context.Clients.Update(originalClient); //Здесь я вызываю этот метод из:public IActionResult Update(DetailViewModel vm) { var originalClient = (Client)_service.GetAsNoTracking(vm.ClientId); var modifiedClient = (Client)_service.Fetch(vm.ClientId.ToString()); // Changing the modifiedClient here _service.Update(originalClient, modifiedClient); } Вот метод GetAsNotTracking:public Client GetAsNoTracking(long id) { return GetClientQueryableObject(id).AsNoTracking().FirstOrDefault(); } Выбрать метод:public object Fetch(string id) { long fetchId; long.TryParse(id, out fetchId); return GetClientQueryableObject(fetchId).FirstOrDefault(); } GetClientQueryableObject:private Microsoft.Data.Entity.Query.IIncludableQueryable GetClientQueryableObject(long searchId) { return _context.Clients .Where(x => x.Id == searchId) .Include(x => x.Opportunities) .ThenInclude(x => x.BusinessUnit) .Include(x => x.Opportunities) .ThenInclude(x => x.Probability) .Include(x => x.Industry) .Include(x => x.Activities) .ThenInclude(x => x.User) .Include(x => x.Activities) .ThenInclude(x => x.ActivityType); } Есть идеи?Я просмотрел следующие статьи/обсуждения. Безрезультатно:ASP.NET GitHub Issue 3839ОБНОВЛЕНИЕ:Вот изменения в GetAsNoTracking:public Client GetAsNoTracking(long id) { return GetClientQueryableObjectAsNoTracking(id).FirstOrDefault(); } GetClientQueryableObjectAsNoTracking:private IQueryable GetClientQueryableObjectAsNoTracking(long searchId) { return _context.Clients .Where(x => x.Id == searchId) .Include(x => x.Opportunities) .ThenInclude(x => x.BusinessUnit) .AsNoTracking() .Include(x => x.Opportunities) .ThenInclude(x => x.Probability) .AsNoTracking() .Include(x => x.Industry) .AsNoTracking() .Include(x => x.Activities) .ThenInclude(x => x.User) .AsNoTracking() .Include(x => x.Activities) .ThenInclude(x => x.ActivityType) .AsNoTracking(); }
R

Rijnhardt

6 лет назад

Ответов: 18

Почему все используют typedef вместо стандартных типов C?

Если вы хотите использовать Qt, вы должны использовать quint8, quint16 и так далее.Если вы хотите использовать GLib, вы должны приветствовать guint8, guint16 и так далее.В Linux есть u32, s16 и так далее.uC/OS определяет SINT32, UINT16 и т. д.И если вам придется использовать какую-то комбинацию этих вещей, вам лучше быть готовым к неприятностям. Потому что на вашей машине u32 будет typedefd более long и quint32 будет typedefd более *100012 *int и компилятор будет жаловаться.Почему все так делают, если есть ? Это какая-то традиция для библиотек?
A

Amomum

5 лет назад

Ответов: 4

Как я могу избежать циклов «для» с условием «если» внутри них с помощью С++?

Почти во всем коде, который я пишу, я часто сталкиваюсь с проблемами сокращения наборов в коллекциях, которые в конечном итоге заканчиваются наивными условиями «если» внутри них. Вот простой пример:for(int i=0; iС функциональными языками я могу решить проблему, сократив коллекцию до другой коллекции (легко), а затем выполнив все операции над моим сокращенным набором. В псевдокоде:newCollection И в других вариантах C, таких как C#, я мог бы уменьшить с помощью предложения where, напримерforeach (var x in myCollection.Where(c=> c == SOMETHING)) { DoStuff(); } Или лучше (по крайней мере, на мой взгляд)myCollection.Where(c=>c == Something).ToList().ForEach(d=> DoStuff(d)); Признаюсь, я много смешиваю парадигмы и стилю, основанному на субъективном мнении, но я не могу не чувствовать, что упускаю что-то действительно фундаментальное, что могло бы позволить мне использовать эту предпочитаемую технику с C++. Кто-нибудь может просветить меня?
D

Darkenor

6 лет назад

Ответов: 13

Как извлечь список из appsettings.json в ядре .net

У меня есть файл appsettings.json, который выглядит так:{ "someSetting": { "subSettings": [ "one", "two", "three" ] } } Когда я создаю свой корень конфигурации и делаю что-то вроде config["someSetting:subSettings"], он возвращает ноль, а фактические доступные настройки выглядят примерно так:config["someSettings:subSettings:0"]Есть ли лучший способ получить содержимое someSettings:subSettings в виде списка?
d

devlife

5 лет назад

Ответов: 6

Зачем вообще использовать модификатор параметра «in» в C#?

Итак, я (думаю, я) понимаю, что делает модификатор параметра in. Но то, что он делает, кажется совершенно излишним.Обычно я думаю, что единственной причиной использования ref будет изменение вызывающей переменной, что явно запрещено in* 100008*. Таким образом, передача по ссылке in кажется логически эквивалентной передаче по значению.Есть ли какое-то преимущество в производительности? Я считал, что с внутренней стороны параметр ref должен как минимум копировать физический адрес переменной, который должен быть того же размера, что и любой типичный объект. ссылка.Итак, преимущество только в больших структурах, или есть какая-то закулисная оптимизация компилятора, которая делает его привлекательным в других местах? Если второе, то почему бы мне не сделать каждый параметр в?
T

Travis Reed

3 года назад

Ответов: 5

Причудливый способ размещения двумерного массива?

В проекте кто-то нажал эту строку:double (*e)[n+1] = malloc((n+1) * sizeof(*e)); Который предположительно создает двумерный массив из (n+1)*(n+1) двойников.Предположительно, я говорю, потому что до сих пор никто из тех, кого я спрашивал, не мог сказать мне, что именно это делает, откуда это взялось или почему это должно работать (что якобы работает, но я м еще не купил).Возможно, я упускаю что-то очевидное, но я был бы признателен, если бы кто-нибудь объяснил мне строку выше. Потому что лично я чувствовал бы себя намного лучше, если бы мы использовали то, что действительно понимаем.
U

User1291

6 лет назад

Ответов: 3

Не удалось найти файл метаданных VS 2017 .dll

Я знаю, что есть еще один вопрос с точно такой же проблемой, но я просмотрел все эти ответы, и ни один мне не помог. :( (Это был вопрос.)Я только что создал новый проект ASP.NET MVC и присоединил к решению несколько .dll. Теперь, когда я пытаюсь собрать проект, я получаю сообщение об ошибке, показанное ниже, для 3 из 5 библиотек.Error CS0006 Metadata file 'C:\Users\...\source\Database\bin\Debug\DataAccessLayer.dll' could not be found Logic C:\Users\...\source\Logic\CSC 1 Active Error CS0006 Metadata file 'C:\Users\...\source\Logic\bin\Debug\Logic.dll' could not be found PTS2-MVC C:\Users\...\source\PTS2-MVC\CSC 1 Active Error CS0006 Metadata file 'C:\Users\...\source\PTS2-MVC\bin\PTS2-MVC.dll' could not be found PTS2-MVC.Tests C:\Users\...\source\PTS2-MVC.Tests\CSC 1 Active Когда я захожу в папку bin\debug этой .dll, я вижу, что она пуста, а другая .dll, где я не получаю сообщения об ошибке, не пуста. Но я понятия не имею, как это исправить или что я сделал, чтобы это произошло.Наиболее распространенный ответ: перейти к свойствам решения решения и перейти к конфигурации и снять галочку -> *100010 *apply -> check и снова apply, но это не сработало
S

Svenmarim

5 лет назад

Ответов: 29

Как с помощью csproj настроить несколько целевых библиотек классов .NET Core?

Когда .NET Core все еще использовал формат project.json, можно было создать библиотеку классов для нескольких фреймворков (например, net451, netcoreapp1.0).Теперь, когда официальный формат проекта csproj с использованием MSBuild, как указать несколько целевых платформ? Я пытаюсь найти это в настройках проекта в VS2017, но я могу настроить таргетинг только на одну инфраструктуру из платформ .NET Core (в ней даже не перечислены другие полные версии .NET Framework, которые я делаю установил):
G

Gigi

5 лет назад

Ответов: 4

2022 WebDevInsider