Если вам нужно вручную получить сборку в GAC, самый простой способ, который я знаю, это Start > Run > "C:\windows\assembly\gac_msil"
. В GAC есть папка для каждой сборки, так что вы можете просмотреть ее и найти точный путь к нужной вам DLL, которая обычно будет выглядеть примерно так:
C:\windows\assembly\GAC_MSIL\System.Net\3.5.0.0__b03f5f7f11d50a3a\System.Net.dll
Что просто name\version__publickey\filename.dll
Возможно, есть более "правильный" способ, поэтому, если кто-то знает, что это такое, поправьте меня!
Что касается второго вопроса, я могу только предположить. Имеет смысл, что GAC предназначен для библиотек классов, а не для исполняемых файлов, но это в основном философский подход. Я не знаю никаких технических аргументов, так или иначе.
Редактировать : этот прекрасный первый комментарий под ответом оказался недоразумением и решен :)