2016-01-21 4 views
1

У меня возникла раздражающая проблема с MSDeploy и публикацией профиля Visual Studio. В моем проекте у меня есть группа свойств, в которой я настраиваю элемент для ссылки позже.

<LocalBuildLocation>$(SolutionDir)WebSites\MyWebSite\</LocalBuildLocation> 

К сожалению, Visual Studio будет случайно уронить $(SolutionDir) строку из этого свойства и моя сборка будет выполнена. Я копирую его вручную, и все хорошо.

Может ли кто-нибудь подумать, почему этот предмет продолжает удаляться?

ответ

1

См: $(SolutionDir) MSBuild property incorrect when running Sandcastle Help File Builder via CMD и getting the value of $(ProjectDir), $(SolutionDir) in a vcproj file

Похоже $SolutionDir делает (иногда) работать с MSBuild, но только если вы строите файл решения. Это то же самое, что и $ProjectDir.

Но вы не должны использовать их в MSBuild. Хотя они работают иногда - это ненадежно. И как указал другой ответ:

Макросы Visual Studio, такие как $ (SolutionDir), не работают в MSBuild. Вместо этого вы можете использовать свойства проекта .

Источник: Code Generation in a Build Process

$ (ProjectDir) Каталог проекта (определяется как диск + путь); содержит обратную косую черту '\'.

$ (SolutionDir) Каталог решения (определяемый как привод + путь); включает обратную косую черту «\».

Обратите внимание, что:

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

Источник: Macros for Build Commands and Properties

+0

маркированы как ответ, а другой был первым это более подробно и второй ссылке на «макросы для сборки команд и свойств» привели меня к тому, что мне было нужно! Интересно, что $ (SolutionDir) является его непоследовательным в группе свойств, которую я использую. Я увижу, будет ли $ (MSBuildProjectDirectory) задерживаться, и сборка не удалит его. –

1

От MSDN: Using project properties in assembly and include directives

Визуальные макросы Студийные как $(SolutionDir) не работают в MSBuild. Вместо этого вы можете использовать свойства проекта .

Использование $(ProjectDir) (безопасный, проектный уровень собственности) или $(MSBuildProjectDirectory) (безопасный, всегда существует)

Смежные вопросы