Вы не можете; не к /usr
, так или иначе. Только суперпользователи могут записать в те каталоги. Попытайтесь установить Python на пути в соответствии с Вашим корневым каталогом вместо этого.
Привет, ребята, если вы все еще ищете ответ на вот попробуйте это.
Свяжите с событиями публикации и при успешном нажатии вызовите вашу внешнюю команду. Я делаю то же самое, создавая решение, а затем запускаю средство запуска тестов MSpec ( сообщение в блоге ).
Для этого вам нужно добавить ловушку для PublishEvents_OnPublishDone. Сделайте это, зайдя в модуль EnvironmentEvents и добавив следующее:
<System.contextStaticAttribute()> Public WithEvents PublishEvents As EnvDTE80.PublishEvents
Private Sub PublishEvents_OnPublishDone(ByVal Success As Boolean) Handles PublishEvents.OnPublishDone
'call custom module sub here.
End Sub
Если вы хотите запустить только внешнюю команду, иногда делайте что-то вроде этого. Создайте свой макрос следующим образом:
Public runExternalCommandOnComplete As Boolean = False
Sub PublishAndRunExternalCommand()
DTE.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate()
DTE.ActiveWindow.Object.GetItem("04 - Products\04 - Products.WSS").Select(vsUISelectionType.vsUISelectionTypeSelect)
DTE.ExecuteCommand("ClassViewContextMenus.ClassViewProject.Publish")
runExternalCommandOnComplete = True
End Sub
Затем в EnvironmentEvents добавьте следующее: (Примечание: CustomMacros - это имя модуля, в который вы поместили приведенный выше код)
<System.contextStaticAttribute()> Public WithEvents PublishEvents As EnvDTE80.PublishEvents
Private Sub PublishEvents_OnPublishDone(ByVal Success As Boolean) Handles PublishEvents.OnPublishDone
CustomMacros.runExternalCommandOnComplete = False
'Where ExternalCommand1 matches the command you want to run
DTE.ExecuteCommand("Tools.ExternalCommand1")
End Sub
Это должно сработать.
Ура,
Кайл
<System.contextStaticAttribute()> Public WithEvents PublishEvents As EnvDTE80.PublishEvents
Private Sub PublishEvents_OnPublishDone(ByVal Success As Boolean) Handles PublishEvents.OnPublishDone
'call custom module sub here.
End Sub
Если вы хотите запустить только внешнюю команду, иногда делайте что-то вроде этого. Создайте свой макрос следующим образом:
Public runExternalCommandOnComplete As Boolean = False
Sub PublishAndRunExternalCommand()
DTE.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate()
DTE.ActiveWindow.Object.GetItem("04 - Products\04 - Products.WSS").Select(vsUISelectionType.vsUISelectionTypeSelect)
DTE.ExecuteCommand("ClassViewContextMenus.ClassViewProject.Publish")
runExternalCommandOnComplete = True
End Sub
Затем в EnvironmentEvents добавьте следующее: (Примечание: CustomMacros - это имя модуля, в который вы поместили приведенный выше код)
<System.contextStaticAttribute()> Public WithEvents PublishEvents As EnvDTE80.PublishEvents
Private Sub PublishEvents_OnPublishDone(ByVal Success As Boolean) Handles PublishEvents.OnPublishDone
CustomMacros.runExternalCommandOnComplete = False
'Where ExternalCommand1 matches the command you want to run
DTE.ExecuteCommand("Tools.ExternalCommand1")
End Sub
Это должно сработать.
Ура,
Кайл
<System.contextStaticAttribute()> Public WithEvents PublishEvents As EnvDTE80.PublishEvents
Private Sub PublishEvents_OnPublishDone(ByVal Success As Boolean) Handles PublishEvents.OnPublishDone
'call custom module sub here.
End Sub
Если вы хотите запустить только внешнюю команду, иногда делайте что-то вроде этого. Создайте свой макрос следующим образом:
Public runExternalCommandOnComplete As Boolean = False
Sub PublishAndRunExternalCommand()
DTE.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate()
DTE.ActiveWindow.Object.GetItem("04 - Products\04 - Products.WSS").Select(vsUISelectionType.vsUISelectionTypeSelect)
DTE.ExecuteCommand("ClassViewContextMenus.ClassViewProject.Publish")
runExternalCommandOnComplete = True
End Sub
Затем в EnvironmentEvents добавьте следующее: (Примечание: CustomMacros - это имя модуля, в который вы поместили приведенный выше код)
<System.contextStaticAttribute()> Public WithEvents PublishEvents As EnvDTE80.PublishEvents
Private Sub PublishEvents_OnPublishDone(ByVal Success As Boolean) Handles PublishEvents.OnPublishDone
CustomMacros.runExternalCommandOnComplete = False
'Where ExternalCommand1 matches the command you want to run
DTE.ExecuteCommand("Tools.ExternalCommand1")
End Sub
Это должно сработать.
Ура,
Кайл
Вот как вы можете скомпилировать один файл, а затем связать все решение, например:
Dim WithEvents t As Timers.Timer
Sub test()
DTE.ExecuteCommand("Build.Compile")
t = New Timers.Timer
t.Interval = 0.05
t.Start()
End Sub
Sub t_Elapsed(ByVal ee As Object, ByVal dd As Timers.ElapsedEventArgs) Handles t.Elapsed
If DTE.Solution.SolutionBuild.BuildState <> vsBuildState.vsBuildStateInProgress Then
t.Stop()
DTE.ExecuteCommand("Build.Link")
End If
End Sub