Только что поймал таковую: если в свойствах проекта в поле "Conditional compilation symbols", либо в самом файле проекта в ноде <DefineConstants> в списке есть пробел, то это приводит к ошибке компиляции. Компилятор принимает все, что находится после пробела за новый параметр/файл и пытается его интерпретировать.
Re: Ошибка определения констант в свойствах проекта.
Здравствуйте, Aberro, Вы писали:
A>Только что поймал таковую: если в свойствах проекта в поле "Conditional compilation symbols", либо в самом файле проекта в ноде <DefineConstants> в списке есть пробел, то это приводит к ошибке компиляции. Компилятор принимает все, что находится после пробела за новый параметр/файл и пытается его интерпретировать.
Здравствуйте, VladD2, Вы писали:
VD>Заводи issue. Будем править.
Может кто за меня написать? У меня нет акка на гитхабе и желания с этим возиться. Я немерле только одним глазом смотрю.
Кстати, еще одну ошибку нашел — цифры неправильно раскрашиваются в VS, они всегда черные, даже если нигде в цветовых настройках нет черного цвета.
Re: Ошибка определения констант в свойствах проекта.
Здравствуйте, Aberro, Вы писали:
A>Только что поймал таковую: если в свойствах проекта в поле "Conditional compilation symbols", либо в самом файле проекта в ноде <DefineConstants> в списке есть пробел, то это приводит к ошибке компиляции. Компилятор принимает все, что находится после пробела за новый параметр/файл и пытается его интерпретировать.
C# ведет себя следующим образом.
Пробелы и символ ";" трактуются одинаково.
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<PlatformTarget>x86</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>TRACE;DEBUG;A B C D </DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication17
{
class Program
{
static void Main(string[] args)
{
#if A
Console.WriteLine("A");
#endif
#if D
Console.WriteLine("D");
#endif
}
}
}
Так немерле — это язык, который пишется сам собой совместными усилиями РСДН-а?) Это интересно)
Любопытный язык, но отсутствие документации с нормальными примерами применения очень усложняет изучение. И это принципиально неправильно, учитывая переход через планку первой версии.
Re[2]: Ошибка определения констант в свойствах проекта.
Здравствуйте, Aberro, Вы писали:
A>Так немерле — это язык, который пишется сам собой совместными усилиями РСДН-а?) Это интересно)
РСДН-а это сильно сказано. На РСДН в день по 10 000 человек заходит. Если бы все помогали, то мы давно бы всех за пояс заткнули. Язык разрабатывается совместными усилиями Rsdn Team и внешних комитеров. Нас не так много, к сожалению. Надеюсь, что пока.
A>Любопытный язык, но отсутствие документации с нормальными примерами применения очень усложняет изучение. И это принципиально неправильно, учитывая переход через планку первой версии.
Вообще-то примеров выше крыши. Просто гибкость настолько велика, что описать все очень сложно. Вот здесь список статей на русском. Ну, и про www.nemerle.org/wiki забывать нельзя. Еще вот, недавно был добавлен Sample-pack, за что огромное спасибо CodingUnit (спасибо выражать — здесь
Премного благодарю за ссылку на SamplePack. Видел реквест на него, но там этой ссылки не было, и я было подумал, что такого нет.
Вообще, я говорил в первую очередь про документацию, и только во вторую — про примеры. Т.к. документация подразумевает полное структурированное описание языка, с примечаниями и примерами использования, а это, согласитесь, весьма удобно и полезно при изучении.
Про присоединяться — это едва ли. У меня слишком мало свободного времени. Да и я язык только начал изучать, на как раз те небольшие запасы времени, коими обладаю.
Re[3]: Ошибка определения констант в свойствах проекта.
Здравствуйте, Aberro, Вы писали:
A>Про присоединяться — это едва ли. У меня слишком мало свободного времени. Да и я язык только начал изучать, на как раз те небольшие запасы времени, коими обладаю.
Чтобы помочь в написании той же документации не обязательно сидеть в отладчике. Тут можно действовать так. Возник вопрос, поискал — не нашел... спросил — ссылку не дали, но обяснили... Создал страничку, написал на ней то что понял и дал ссылку на форум. А тут уже другие помогут и доведут страничку до ума. Глядишь через некоторое время уровень описаний повысится.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Ошибка определения констант в свойствах проекта.
Здравствуйте, _nn_, Вы писали:
__>Ок, а как должно быть ? __>Чем плохо поведение C# ?
Оно всем хорошо кроме того, что избыточно. На сегодня я просто удаляю пробелы из этого поля, перед тем как делить по ";". Это конечно может вызвать проблемы у тех кто решил разбить дефайны пробелами, но есть ли смысл с этим заморачиваться? Кто будет их использовать? Ошибки возникают потому, что люди отбивают пробелами элементы. Это мы пофиксили.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Ошибка определения констант в свойствах проекта.
Здравствуйте, VladD2, Вы писали:
VD>Ну, пофиксил так пофиксил. Хотя вряд ли кто-то будет лепить разделители отличные от тех что визардом сгенерировали.
Мне кажется, что надо либо ловить такие ошибки и говорить о них, либо работать корректно с различными разделителями.
VD>MSBuildTask.n надо просто грохнуть.
Я тоже так подумал, но решил не смешивать с патчем, сейчас грохнул.
Re[6]: Ошибка определения констант в свойствах проекта.
Здравствуйте, Ziaw, Вы писали:
Z>Мне кажется, что надо либо ловить такие ошибки и говорить о них, либо работать корректно с различными разделителями.
Тут ты прав. Там по уму нужно нормальный парсинг применять. О всем что выходит за допустимые значения сообщать. Но в средства доступные под рукой это не позволяют. Вот и лепят все лажу.
VD>>MSBuildTask.n надо просто грохнуть.
Z>Я тоже так подумал, но решил не смешивать с патчем, сейчас грохнул.
Это тоже правильно.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.