2016-10-19 2 views
2

У меня есть приложение C# с Visual Studio 2010. Мне нужны имена сборки для каждой конфигурации. То есть мне нужны разные имена сборок для настройки отладки и выпуска. Поэтому я отредактировал мой csproj, как показано ниже.Отладчик пытается запустить сборку с неправильным именем сборки

<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0"> 
<PropertyGroup> 
    <...> 
    <...> 
    </PropertyGroup> 
    <Choose> 
    <When Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' "> 
     <PropertyGroup> 
     <AssemblyName>MyApplication</AssemblyName> 
     </PropertyGroup> 
    </When> 
    <When Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' "> 
     <PropertyGroup> 
     <AssemblyName>MyApplicationd</AssemblyName> 
     </PropertyGroup> 
    </When> 
    </Choose> 
    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' "> 
    <...> 
    <OutputPath>..\..\..\..\utils\debug\Project\x64\</OutputPath> 
    <...> 
    </PropertyGroup> 
    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' "> 
    <...> 
    <OutputPath>..\..\..\..\utils\release\Project\x64\</OutputPath> 
    <...> 
    </PropertyGroup> 
</Project> 

Билд был успех, и я получил MyApplication.exe для конфигурации выпуска и MyApplicationd.exe для конфигурации отладки. Но когда я, F5/F10, запускаю проект в режиме отладки, я становлюсь ниже ошибки.

Visual Studio не может начать отладку, поскольку цель отладки отсутствует. Пожалуйста, создайте проект и повторите попытку, или установите свойства OutputPath и AssemblyName соответствующим образом, чтобы указать правильное местоположение для целевой сборки.

Как это разрешить? Как я могу указать разные имена сборок на основе конфигурации в файле проекта?

+0

Проверьте менеджер конфигурации сборки под менюПостроениевыберите вы включите опцию сборки для ваших проектов? Или вы используете атрибут AssemblyConfiguration: http://stackoverflow.com/questions/1093338/vs2008-outputting-a-different-file-name-for-debug-release-configurations –

+0

@Jack Zhai: Построение было успешным. Проблема в том, что я не могу отлаживать режим Debug. Он сообщает, что «MyApplication.exe» не найден (т. Е. Отладчик пытается запустить сборку с неправильным AssemblyName). Но возможность отладки в режиме выпуска. – Kaizen

ответ

1

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

Я понимаю, что вы получили подробный список ошибок:

«Visual Studio не может начать отладку, потому что цель отладки» ххх \ ххх \ MyApplication «отсутствует» (Примечание: Это не MyApplicationd). Я прав?

Щелкните правой кнопкой мыши свой проект-> Свойство-> Приложение, если вы проверите имя своей Ассамблеи, я понимаю, что это будет имя выпуска «MyApplication». Если вы действительно хотите отлаживать его в режиме отладки, имя этого свойства должно быть «MyApplicationd», конечно, режим выпуска не будет работать, если вы используете имя сборки отладки.

Я понимаю, что мы можем редактировать имя сборки пользовательского интерфейса в свойстве проекта, а затем сгенерировать xml-код в вашем .xxproj-файле, но если вы отредактируете файл proj напрямую, это не изменит его под пользовательским интерфейсом автоматически.

Я также использую этот способ здесь:

Change assembly name based on configuration (Visual Studio 2005/2008)

Но он имеет те же сообщения об ошибках, как ваша.

способ использования, кажется, связано с командной строки MSBuild:

Change name of exe depending on conditional compilation symbol

enter image description here

+0

Да. Имя сборки должно быть «MyApplication» в режиме деблокирования и «MyApplicationd» в режиме отладки.Когда я изменяю режим Release \ Debug, есть ли какой-либо механизм для его автоматического изменения в пользовательском интерфейсе? – Kaizen

+0

@Kaizen, отредактировать его в свойстве проекта вручную - это обходной путь, о котором я могу думать, я не достигаю его, используя событие post build, даже если другие члены также думают об использовании этого способа: http://stackoverflow.com/questions/ 208084/how-to-use-a-different-assembly-name-for-different-configurations, но я думаю, что редактировать его вручную очень удобно. –

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