Я установил несколько команд после сборки в Visual Studio 2017, которые должны позволить мне запустить программу, которая у меня сейчас есть в System32 (wsl.exe). Однако Visual Studio не видит программу.
Я попытался установить команду на dir C:\Windows\System32\
, чтобы увидеть все файлы, которые он мог перечислить, и на самом деле он не перечисляет более 1000 файлов из примерно 4600 файлов, которые у меня есть, включая файл wsl.exe
, который я пытаюсь бежать. Количество файлов отображается правильно при запуске той же команды в командной строке.
Я попытался запустить whoami
в качестве команды после сборки, и она возвращает того же пользователя, как если бы я запустил ту же команду в командной строке.
Я что-то упускаю?
Это связано с Visual Studio, поскольку она вообще не может видеть файл wsl
при выполнении с ним команды dir
. Я знаю, что могу запустить его из любой папки, и поскольку он выдавал ошибку "wsl is not recognized as an internal or external command, operable program or batch file."
, я попробовал больше шагов и пришел к выводу, что при запуске dir
в командах после сборки он не отображал все файлы в каталоге. . И все это, пока я могу правильно видеть файл с помощью командной строки Windows.
1) без репродукции. Я это вижу и называю просто прекрасным 2) Это не имеет ничего общего с VS. dir
- это команда командной строки. Вы спрашиваете, почему вы не видите некоторые файлы в System32, не указывая, что это за файлы. 3) Какой wsl
? Он вообще существует? Он установлен? Вы пытаетесь запустить оболочку Unix на этапе после сборки?
О вашем номере 2): тогда почему при запуске команды dir
в VS не отображается файл wsl.exe, при запуске ls -al /mnt/c/Windows/System32
в WSL он отображается, и в командной строке, запускаемой `dir C: \ Windows \ System32`, также отображается. Для вашего номера 3): я уточнил, что в сообщении говорится, что действительно У меня сейчас в System32 (wsl.exe), так что да, он существует.
возможный дубликат Запуск сборки на основе WSL bash из Visual Studio 2015
Сама Visual Studio - это 32-битное приложение. Таким образом, ОС изменяет поведение приложения на другой вид папок Windows и System32. то есть c:\Windows\System32
в приложении на самом деле является папкой c:\Windows\SysWow6
4 для 32-битных приложений. Это объясняет, почему он не видит двоичный файл wsl.exe ... Не уверен, что можно обойти ... изучаю это ...
wsl
- это подсистема Windows для Linux. Это тоже не пропало, запуск dir wsl.exe
внутри System32 работает, если, конечно, эта функция установлена. В любом случае OP не должен ничего помещать в System32.
Не «помещать что-либо в System32». WSL был автоматически установлен там с помощью программ и компонентов в панели управления. Еще попробую, @selbie
@ PeterAS17, ты не объяснил, что пытаешься сделать. Или какой WSL
вы имеете в виду. Я могу запустить WSL, подсистему Windows для Linux, просто набрав wsl
в консоли любой. Я прекрасно вижу это с dir
после изменения текущего каталога на C:\Windows\System32
. Я тоже это вижу с dir c:\Windows\system32\wsl.exe
.
@PanagiotisKanavos, чтобы прояснить вывод с каждой стороны: VS показывает «Файл не найден» с помощью dir c:\Windows\system32\wsl.exe
. Командная строка показывает файл: 06.09.2018 15:02 114 688 wsl.exe
@ PeterAS17, ваш вопрос настоящий заключался в том, как запустить этап сборки Linux. На это уже ответили в этом повторяющемся вопросе
@selbie Вы совершенно правы ... Я не обратил внимания на то, что VS было 32-битным приложением, и проигнорировал тот факт, что оно указывает на папку SysWow64. Копирование и вставка необходимых файлов для команды после сборки, похоже, на данный момент сделали свою работу. Должен найти лучший способ обхода, если таковой имеется. Спасибо!
При чем здесь Visual Studio?
wsl
- это Подсистема Windows для Linux. Это не просто исполняемый файл. Вы жестяная банка запускаете его из любой папки, так как он находится в пути. Просто введитеwsl
.