Что 'Разделитель' и атрибуты 'InheritsFromParent' означают в .vsprops файлах?

Я не совсем понял, что вы имеете в виду, но должно быть что-то, что нужно исправить:

static void Main(string[] args)
{
    Console.WriteLine(Work());
}
public static void Work(int input)
......

Вы можете видеть, что Work() - это «Действие», а не «Функция» , Поскольку он ничего не возвращает, поэтому не подходит WriteLine результат из Work()

Кстати, вы можете видеть, что Work(int input) нужен вход, который, очевидно, вы не предоставили. Попробуйте это:

static void Main(string[] args)
{
    int myInput = int.Parse(Console.ReadLine());
    Work(myInput);
}
public static void Work(int input)
{ .....
7
задан 9 revs 30 September 2008 в 20:14
поделиться

2 ответа

[Отвечая на мой собственный вопрос]

InheritsFromParent средства предварительно ожидают. Для проверки этого я сделал эксперимент, который показывает как Пользовательская работа Макросов в Visual Studio 2008. Вот установка:

  • Проект p.vcproj включает файл окна свойств d.vsprops ('d' для полученного) использование InheritedPropertySheets тег.
  • d.vsprops включает файл окна свойств b.vsprops ('b' для основы.)
  • p.vcproj также определяет Событие Перед сборкой, которое выводит среду.
  • Оба .vsprops файлы содержат Пользовательские Макроопределения.

b.vsprops

...
<UserMacro Name="NOENV" Value="B"/>
<UserMacro Name="OVERRIDE" Value="B" PerformEnvironmentSet="true"/>
<UserMacro Name="PREPEND" Value="B" PerformEnvironmentSet="true"/>
...

d.vsprops

...
<VisualStudioPropertySheet ... InheritedPropertySheets=".\b.vsprops">
<UserMacro Name="ENV" Value="$(NOENV)" PerformEnvironmentSet="true"/>
<UserMacro Name="OVERRIDE" Value="D" PerformEnvironmentSet="true"/>
<UserMacro Name="PREPEND" Value="D" InheritsFromParent="true"
    Delimiter="+" PerformEnvironmentSet="true"/>
...

p.vcproj

...
<Configuration ... InheritedPropertySheets=".\d.vsprops">
<Tool Name="VCPreBuildEventTool" CommandLine="set | sort"/>
...

сборка производится

...
ENV=B
OVERRIDE=D
PREPEND=D+B
...

От этих результатов мы можем завершить следующее:

  1. PerformEnvironmentSet="true" необходимо, чтобы Пользовательские Макросы были определены в среде, используемой для событий сборки. Доказательство: NOENV не показанный в сборке производится.
  2. Пользовательские Макросы всегда наследованы от включенных окон свойств независимо от PerformEnvironmentSet или InheritsFromParent. Доказательство: в b.vsprops, NOENV не установлен в среде и в d.vsprops это используется без потребности InheritsFromParent.
  3. Простое переопределение Пользовательского Макроса переопределяет любое предыдущее определение. Доказательство: OVERRIDE установлен на D хотя это было ранее определено как B.
  4. Переопределение пользовательского макроса с InheritsFromParent="true" предварительно ожидает новое определение любому предыдущему определению, разделенному указанным Delimiter. Доказательство: PREPEND установлен на D+B (нет D или B+D.)

Вот некоторые дополнительные ресурсы, которые я нашел для объяснения Visual Studio .vsprops файлы и связанные темы, это с нескольких лет назад, но это все еще полезно:

понимание системной первой части проекта VC: файлы и инструменты

понимание системной второй части проекта VC: конфигурации и диалоговое окно страниц свойства проекта

понимание системной части III проекта VC: макросы, переменные среды и совместное использование

понимание системной части проекта VC IV: свойства и наследование свойства

понимание системной части V проекта VC: здание, инструменты и зависимости

понимание системной части VI проекта VC: сделанные на заказ шаги и события сборки

понимание системной части VII проекта VC: проекты "make-файла" и (пере-) использование сред

9
ответ дан 7 December 2019 в 03:23
поделиться

Существует документация относительно версии UI этого здесь. Много XML-файлов кажется несколько недокументированным, часто просто дав файл схемы. Ваше предположение относительно того, как они функционируют, является в значительной степени правильным.

0
ответ дан 7 December 2019 в 03:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: