c # Проблема ассоциации файлов WINFORM - PullRequest
0 голосов
/ 08 ноября 2011

У меня есть приложение WinForm, которое почти готово к работе, и вот проблема, с которой я сталкиваюсь, и я не могу ее решить.

Во-вторых, извините за публикацию изображения журнала ошибок вместо реального текста для этого.

Я новый пользователь переполнения стека и не смог исправить проблему с форматированием.

Файл Test.DAT связан с KT.exe.Но при попытке открыть Test.DAT с помощью KT.exe выдается исключение.(пожалуйста, смотрите прикрепленное изображение ... еще раз извините за изображение).

Я создал пример приложения для Windows, которое отлично работает, но это не так.

Итак, я совершенно не понимаю, что с ним не так?

Итак, вернемся к проблеме.Посмотрите на следующую структуру файлов:

C:\PTS\KT\KT.ext
C:\PTS\KT\log4.net
C:\PTS\KT\Workspace\test.DAT

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

РЕШЕНИЕ: Извините за поднятие ложной тревоги.На самом деле, чтобы получить информацию о сборке, я загружал KT.exe внутри Main (), используя Assembly.LoadForm ("KT.exe"), который выдавал ошибку.Я обновил код до сборки Assembly = Assembly.GetExecutingAssembly ();Я не могу поверить, что потребовалось так много времени, чтобы понять это.

Error log

Ответы [ 3 ]

1 голос
/ 08 ноября 2011

Ваша проблема в том, что файловая ассоциация не включает полный путь к kt.exe, только имя файла.Поэтому, когда вы открываете файл в каталоге Workspace, операционная система пытается найти там также kt.exe.

Это можно проверить, переместив файл .dat из рабочей области в тот же каталог, что и kt.exe., а затем дважды щелкните его.

Обновление:

Чтобы повторно связать файл с вашей программой, выполните следующие действия:

1) Откройте командную строку

2) Очистите существующую связь, введя:

ASSOC .dat= 

3) Создайте новую запись типа файла для своего приложения, введя:

FTYPE KTDatFile="c:\pts\kt\kt.exe" %1 %*

4) Свяжите новый тип файла с вашим расширением, введя:

ASSOC .dat=KTDatFile
0 голосов
/ 10 мая 2012

РЕШЕНИЕ: Извините за поднятие ложной тревоги.На самом деле, чтобы получить информацию о сборке, я загружал KT.exe внутри Main (), используя Assembly.LoadForm ("KT.exe"), который выдавал ошибку.Я обновил код до сборки Assembly = Assembly.GetExecutingAssembly ();Я не могу поверить, что потребовалось так много времени, чтобы понять это.

0 голосов
/ 08 ноября 2011

Похоже, что вы пытаетесь загрузить «KT.exe» из каталога Workspace, но он есть в родительском каталоге в Workspace.

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