VisualStudio 2008 Exe проблема - PullRequest
       24

VisualStudio 2008 Exe проблема

0 голосов
/ 24 сентября 2010

У меня есть решение VisualStudio с 5 проектами. У меня есть 3/5 проектов, в которых есть файл .exe в папке <mysolutionpath>/bin. Недавно я добавил новый проект в свое решение (проект с главной точкой входа) и поместил его файл .exe в каталог <mysolutionpath/bin.

Но у меня есть exe на <mysolutionpath>/<recentproject>/bin, и я не знаю, потому что так происходит.

Я новичок в VisualStudio, не могли бы вы мне помочь?

EDIT: В моем решении VisualStudio есть пять проектов «Приложение Windows Form». Когда я компилирую свое решение, у меня возникает такая ситуация:

1) First.exe в папке / bin; 2) Second.exe в папке / bin; 3) Третий проект не имеет Главной точки входа; 4) Fourth.exe в папке / bin; 5) Пятый проект не имеет главной точки входа.

Теперь я бы добавил новый проект в свое решение, затем я щелкнул правой кнопкой мыши на своем решении-> Добавить-> Приложение Windows Form, и новый проект (например, с именем «TEST» с главной точкой входа) был добавлен в мой раствор. решение. Но когда я перекомпилирую все решение, я ожидаю получить TEST.exe в папке / bin, но у меня есть TEST.exe в /TEST/bin/TEST.exe, а не в /bin/TEST.exe, как это было в предыдущих пяти проектах. Надеюсь, на этот раз я хорошо объяснил.

Ответы [ 3 ]

1 голос
/ 24 сентября 2010

Предполагая, что ваш проект предназначен для исполняемого файла, а не для чего-то другого, например библиотеки классов, вы найдете исполняемый файл в выходном каталоге, заданном в настройках проекта. Если это не исполняемый проект, вы не получите вывод .exe (для библиотеки классов ожидайте .dll).

По умолчанию VS помещает исполняемые файлы из сборок Debug и Release в отдельные каталоги, так что вы можете захотеть посмотреть и там.

0 голосов
/ 04 февраля 2015

В настройках проекта в разделе Build есть Путь выхода: настройка. Я обычно делаю это для мульти-проектно-зависимых решений:

  1. Создайте новый файл решения в каталоге над всеми каталогами проекта.
  2. Создайте каталог bin в том же каталоге, что и решение.
  3. Теперь откройте файл решения и добавьте все проекты.
  4. Для каждого проекта перейдите в раздел «Сборка» в настройках проекта.
  5. Для режима Release установите Выходной путь: в .. \ bin \ Release
  6. Для режима отладки установите Выходной путь: на .. \ bin \ Debug
  7. Теперь для каждого проекта удалите существующие ссылки на другие библиотеки DLL в своем решении и вместо этого добавьте ссылку на соответствующий проект.

Этот подход устраняет необходимость в сценариях ** Build Event *, которые имеют тенденцию загромождать окно вывода во время сборки. Использование ссылок на проекты заставит Visual Studio скопировать скомпилированные библиотеки DLL в нужную папку, а также гарантирует, что проекты будут перекомпилированы перед началом отладки после любых изменений кода. Этот подход обычно гарантирует, что вы будете использовать правильную версию двоичных файлов и файлов символов во время отладки.

0 голосов
/ 24 сентября 2010

VS помещает все проекты в один выход по умолчанию, если они все связаны по ссылке. Если на ваш следующий исполняемый файл ссылается main - просто сделайте это, и он появится в главном выводе. Если это не выбор, вы можете добавить (или изменить) файл .targets. В моем проекте было такое содержание:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
    <ClientPublishDirectory>$(SolutionDir)output\</ClientPublishDirectory>
    <PluginPublishDirectory>$(SolutionDir)output\</PluginPublishDirectory>
</PropertyGroup>
<Target Name="CopyOutputFiles">
    <CreateItem Include="$(OutputPath)\**\*.*;">
      <Output TaskParameter="Include" ItemName="OutputFiles" />
    </CreateItem>
    <Copy SourceFiles="@(OutputFiles)" DestinationFolder="$(ClientPublishDirectory)%(OutputFiles.RecursiveDir)" ContinueOnError="false" />
</Target>
<Target Name="CopyPluginsOutputFiles">
    <CreateItem Include="$(OutputPath)\**\*.*;">
    <Output TaskParameter="Include" ItemName="PluginsFiles" />
    </CreateItem>
    <Copy SourceFiles="@(PluginsFiles)" DestinationFolder="$(PluginPublishDirectory)%(PluginsFiles.RecursiveDir)" ContinueOnError="false" />
</Target>
<Target Name="Copy3rdParties">
    <CreateItem Include="$(SolutionDir)\..\libs\*.dll">
    <Output TaskParameter="Include" ItemName="OutputFiles" />
    </CreateItem>
    <Copy SourceFiles="@(OutputFiles)" DestinationFolder="$(ClientPublishDirectory)%(OutputFiles.RecursiveDir)" ContinueOnError="false" /> </Target> </Project>
...