Я использую VS2008, и у меня есть проект, который не запустится, когда я нажму F5 или когда я нажимаю мало зеленого треугольника на панели инструментов. Мерцания экрана однажды, как проект собирается работать, и затем он не делает. Сообщение сборки утверждает, что сборка была успешна, но проект не запустится.
В Менеджере конфигурации, моя 'Активная конфигурация решения': набор должен Отладить, и в 'Контекстах проекта' список, столбец 'Configuration' для моего Проекта установлен Отладить. Я даже переключил их назад и вперед между Отладкой и Выпуском и затем обратно Отлаживать, все без эффекта. Проект, который я пытаюсь выполнить, установлен как 'Проект Запуска' в моем решении.
Если я перехожу к своей \bin\Debug папке и дважды щелкаю по .exe, (который показывает надлежащую метку времени на файле), мое выполнение приложения очень хорошо.
Какие-либо идеи, почему я не могу получить глупую вещь работать в режиме отладки?
Править:
Это - приложение winforms.
Моей версией Visual Studio являются 9.0.30729.1 SP
Платформа.NET: версия 3.5 SP1
Править:
Это может быть связано с TortoiseSVN. Я сохраняю свой исходный код для этого проекта в SVN. Когда я сделаю различный/новый контроль в TortoiseSVN, иногда новый контроль будет затем позволять проекту работать. Я не понимаю на вид неустойчивой природы этой проблемы.
Править:
Не уверенный, если эта информация относится к проблеме, но когда я делаю новый контроль и иметь структуру папок, которая менее глубока (не как много вложенных папок), чем исходный контроль, у меня, кажется, есть лучший шанс проекта, работающего без проблем.
Править: Проблема не имела никакого отношения к TortoiseSVN, см. мой ответ ниже.
ИТ-специалисты выполнили обновление Windows на моем компьютере, и это, по-видимому, устранило проблему. Это как-то связано с System.Runtime.InteropServices.COMException и ошибкой в 'Hosting' .dll. Я не уверен, почему поврежденная DLL хоста повлияла на приложение winforms, но проблема устранила.
Надо начать с основ ... устранили возможность сбоя во время выполнения перед отображением основной формы?
Что делать с результатом, даже если из функции можно вернуть три различных типа объектов? Необходимо выполнить следующее действие:
XXX ret_val = getIntersection();
Если getIntersection
вернул три различных типа объектов, XXX
придется изменить в зависимости от того, что getIntersection
собирался вернуть. Очевидно, что это совершенно невозможно.
Чтобы справиться с этим, можно определить один тип, который определяет достаточно, чтобы охватить все возможности:
class Intersection {
enum { empty, point, circle, sphere};
point3D location;
size_t radius;
};
Теперь getIntersection ()
может вернуть перекресток, который определяет, какой перекресток у вас есть (и BTW, вам нужно рассмотреть четвертую возможность: с двумя сферами одинакового радиуса и одинаковой центральной точкой, пересечение будет сферой) и размером и расположением этого пересечения.
Имеется еще один вариант. Можно вернуть объединение
указателей на объекты вместе с тэгом, который сообщает вызывающему абоненту, какой член объединения является действительным. Что-то вроде:
struct result {
enum discriminant { A_member, B_member, C_member, Undefined } tag;
union result_data {
A *a_object;
B *b_object;
C *c_object;
} data;
result(): tag(Undefined) {}
explicit result(A *obj): tag(A_member) { data.a_object = obj; }
explicit result(B *obj): tag(B_member) { data.b_object = obj; }
explicit result(C *obj): tag(C_member) { data.c_object = obj; }
};
Я бы, вероятно, использовать Boost.variant, как предложил Мануэль , если у вас есть вариант.
-121--2874462-У меня была аналогичная проблема в прошлом. Проект не будет выполняться в режиме отладки.
Он также был вызван поврежденной библиотекой DLL, но не «Hosting». Прошло много времени, так что я не помню точную DLL, но это имело какое-то отношение к Messaging.