Как установить рабочий каталог для проекта Winforms, используя макросы со знаком доллара? - PullRequest
0 голосов
/ 22 ноября 2018

Я работаю над приложением C #, содержание которого, я думаю, не имеет значения.В основном я часто использую Save/OpenFileDialogs.И я использую исходное свойство dir, чтобы сделать его более удобным, и устанавливаю его в текущем рабочем каталоге.

Когда у меня есть сборка релиза, я упаковываю свое приложение и в нем есть все каталоги, поэтомуработает хорошо.Но когда я фактически отлаживаю его в Visual Studio, я хочу установить рабочий каталог, отличный от bin/Debug.И я так и сделал.Я написал буквальный путь, как C:\Something\blah\xyz\workingDir\.И это работает.Проблема в том, что у меня есть две машины, на которых я работаю, и этот путь не будет работать на другой машине.

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

enter image description here

я получаю эту ошибку:

enter image description here

Ребята, вы знаете, в чем может быть проблема?Я думал, что это действительно допустимый макрос, в соответствии с MSDN

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Вы не можете использовать этот (допустимый) макрос для этого поля, поскольку Visual Studio не применяет макросы там.Что заставляет меня верить, это то, что кажется, что вы интерпретируете то, что вы ввели буквально.

Возможно, вам лучше сделать что-то в самом коде, чтобы использовать каталог проекта.Если это так, вы можете проверить, подключен ли отладчик, по крайней мере, для целей разработки и «удобства» (например, Debugger.IsAttached), а затем получить CodeBase свойство исполняемой сборки или CurrentDirectory .Это дает вам удобство, которое вы ищете во время отладки.Конечно, для производства вам может потребоваться другая стратегия.

0 голосов
/ 22 ноября 2018

Не похоже, что вы можете применить этот макрос в этом диалоге.Оставьте значение пустым и перейдите в каталог для решения, перейдите в папку для проекта и увидите [ProjectName] .csproj

Добавьте следующий параметр StartWorkingDirectory в PropertyGroup для конфигурации отладки.

Группа свойств:

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">

И добавьте:

<StartWorkingDirectory>$(ProjectDir)</StartWorkingDirectory>

Таким образом, в конечном итоге это выглядит так:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <PlatformTarget>AnyCPU</PlatformTarget>
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Debug\</OutputPath>
    <StartWorkingDirectory>$(ProjectDir)</StartWorkingDirectory>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
</PropertyGroup>

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...