Browse Source

Merge remote-tracking branch 'upstream/master'

pull/43/head
gumme 12 years ago
parent
commit
874e07edce
  1. 3
      data/resources/StringResources.es-mx.resx
  2. 53
      data/resources/StringResources.es.resx
  3. 2
      data/resources/StringResources.fr.resx
  4. 72
      data/resources/StringResources.it.resx
  5. 142
      data/resources/StringResources.nl.resx
  6. 149
      data/resources/StringResources.resx
  7. 116
      data/resources/StringResources.ru.resx
  8. 18
      data/resources/StringResources.tr.resx
  9. 1
      src/AddIns/BackendBindings/FSharpBinding/Templates/FSharp2ConsoleProject.xpt
  10. 1
      src/AddIns/BackendBindings/FSharpBinding/Templates/FSharp2LibraryProject.xpt
  11. 1
      src/AddIns/BackendBindings/FSharpBinding/Templates/FSharp3ConsoleProject.xpt
  12. 1
      src/AddIns/BackendBindings/FSharpBinding/Templates/FSharp3LibraryProject.xpt
  13. 14
      src/AddIns/BackendBindings/WixBinding/Project/Src/Project/WixProject.cs
  14. 1
      src/AddIns/BackendBindings/WixBinding/Project/WixBinding.csproj
  15. 12
      src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/InstallPackageCmdlet.cs
  16. 6
      src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/InvokeProcessPackageActionsCmdlet.cs
  17. 17
      src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/UpdatePackageCmdlet.cs
  18. 89
      src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/InstallPackageCmdletTests.cs
  19. 54
      src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/UpdatePackageCmdletTests.cs
  20. 29
      src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
  21. 13
      src/AddIns/Misc/PackageManagement/Project/Src/AvailablePackagesViewModel.cs
  22. 18
      src/AddIns/Misc/PackageManagement/Project/Src/ConsolePackageActionRunner.cs
  23. 15
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeFileSystem.cs
  24. 12
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeInstallPackageAction.cs
  25. 16
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackage.cs
  26. 54
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementProject.cs
  27. 35
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManager.cs
  28. 9
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeProjectManager.cs
  29. 15
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeProjectSystem.cs
  30. 7
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeRegisteredPackageRepositories.cs
  31. 5
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeSelectedProject.cs
  32. 7
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeSettings.cs
  33. 12
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeUninstallPackageAction.cs
  34. 12
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeUpdatePackageAction.cs
  35. 44
      src/AddIns/Misc/PackageManagement/Project/Src/FileConflictResolver.cs
  36. 63
      src/AddIns/Misc/PackageManagement/Project/Src/FileConflictView.xaml
  37. 32
      src/AddIns/Misc/PackageManagement/Project/Src/FileConflictView.xaml.cs
  38. 48
      src/AddIns/Misc/PackageManagement/Project/Src/FileConflictViewModel.cs
  39. 15
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageAction.cs
  40. 4
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageActionRunner.cs
  41. 8
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementEvents.cs
  42. 8
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementProject.cs
  43. 3
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementWorkbench.cs
  44. 6
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageOperationResolverFactory.cs
  45. 3
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageViewModelFactory.cs
  46. 12
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageViewModelParent.cs
  47. 5
      src/AddIns/Misc/PackageManagement/Project/Src/ISharpDevelopPackageManager.cs
  48. 1
      src/AddIns/Misc/PackageManagement/Project/Src/ISharpDevelopProjectManager.cs
  49. 4
      src/AddIns/Misc/PackageManagement/Project/Src/IUpdatePackageActions.cs
  50. 13
      src/AddIns/Misc/PackageManagement/Project/Src/IUpdatePackageSettings.cs
  51. 18
      src/AddIns/Misc/PackageManagement/Project/Src/IUpdatePackagesAction.cs
  52. 3
      src/AddIns/Misc/PackageManagement/Project/Src/InstalledPackageViewModel.cs
  53. 3
      src/AddIns/Misc/PackageManagement/Project/Src/InstalledPackageViewModelFactory.cs
  54. 11
      src/AddIns/Misc/PackageManagement/Project/Src/InstalledPackagesViewModel.cs
  55. 14
      src/AddIns/Misc/PackageManagement/Project/Src/LicenseAcceptanceService.cs
  56. 2
      src/AddIns/Misc/PackageManagement/Project/Src/LicenseAcceptanceView.xaml
  57. 62
      src/AddIns/Misc/PackageManagement/Project/Src/MSBuildBasedProjectExtensions.cs
  58. 44
      src/AddIns/Misc/PackageManagement/Project/Src/ManagePackagesUserPrompts.cs
  59. 10
      src/AddIns/Misc/PackageManagement/Project/Src/PackageActionRunner.cs
  60. 6
      src/AddIns/Misc/PackageManagement/Project/Src/PackageActionsToRun.cs
  61. 8
      src/AddIns/Misc/PackageManagement/Project/Src/PackageFromRepository.cs
  62. 21
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementEvents.cs
  63. 5
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementLogger.cs
  64. 32
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementProject.cs
  65. 21
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementSelectedProjects.cs
  66. 12
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementServices.cs
  67. 19
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementWorkbench.cs
  68. 11
      src/AddIns/Misc/PackageManagement/Project/Src/PackageOperationsResolverFactory.cs
  69. 19
      src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs
  70. 3
      src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModelFactory.cs
  71. 9
      src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModelOperationLogger.cs
  72. 18
      src/AddIns/Misc/PackageManagement/Project/Src/PackagesView.xaml
  73. 65
      src/AddIns/Misc/PackageManagement/Project/Src/PackagesViewModel.cs
  74. 19
      src/AddIns/Misc/PackageManagement/Project/Src/ParentPackagesOperationEventArgs.cs
  75. 26
      src/AddIns/Misc/PackageManagement/Project/Src/ProcessPackageAction.cs
  76. 2
      src/AddIns/Misc/PackageManagement/Project/Src/ProcessPackageOperationsAction.cs
  77. 3
      src/AddIns/Misc/PackageManagement/Project/Src/ProjectBrowserRefresher.cs
  78. 19
      src/AddIns/Misc/PackageManagement/Project/Src/ProjectRootElementExtensions.cs
  79. 52
      src/AddIns/Misc/PackageManagement/Project/Src/ReducedPackageOperations.cs
  80. 20
      src/AddIns/Misc/PackageManagement/Project/Src/ResolveFileConflictEventArgs.cs
  81. 44
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/ConsoleHostFileConflictResolver.cs
  82. 14
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/FileConflictAction.cs
  83. 96
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/GlobalMSBuildProjectCollection.cs
  84. 11
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/IConsoleHostFileConflictResolver.cs
  85. 12
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/IGlobalMSBuildProjectCollection.cs
  86. 2
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/IPackageManagementConsoleHost.cs
  87. 56
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/MSBuildProjectImportsMergeResult.cs
  88. 87
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/MSBuildProjectImportsMerger.cs
  89. 18
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/NullGlobalMSBuildProjectCollection.cs
  90. 12
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageManagementConsoleHost.cs
  91. 12
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageManagementConsoleHostProvider.cs
  92. 5
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PowerShellMissingConsoleHost.cs
  93. 168
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/RunAllProjectPackageScriptsAction.cs
  94. 9
      src/AddIns/Misc/PackageManagement/Project/Src/Scripting/RunPackageScriptsAction.cs
  95. 16
      src/AddIns/Misc/PackageManagement/Project/Src/SelectProjectsService.cs
  96. 24
      src/AddIns/Misc/PackageManagement/Project/Src/ServiceWithWorkbenchOwner.cs
  97. 18
      src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopCredentialProvider.cs
  98. 52
      src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopPackageManager.cs
  99. 7
      src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopProjectManager.cs
  100. 58
      src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopProjectSystem.cs
  101. Some files were not shown because too many files have changed in this diff Show More

3
data/resources/StringResources.es-mx.resx

@ -5777,6 +5777,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< @@ -5777,6 +5777,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension<
<data name="SharpDevelop.FileFilter.AllFiles" xml:space="preserve">
<value>Todos los archivos (*.*)</value>
</data>
<data name="SharpDevelop.FileFilter.AllKnownFiles" xml:space="preserve">
<value>Todas las extensiones de archivos conocidas</value>
</data>
<data name="SharpDevelop.FileFilter.AssemblyFiles" xml:space="preserve">
<value>Archivos de ensamblado (*.exe;*.dll)</value>
</data>

53
data/resources/StringResources.es.resx

@ -229,6 +229,56 @@ Descargue un complemento de Internet, luego haga clic en 'Instalar Complemento' @@ -229,6 +229,56 @@ Descargue un complemento de Internet, luego haga clic en 'Instalar Complemento'
<data name="AddInManager.UnknownFileFormat" xml:space="preserve">
<value>Formato de archivo desconocido:</value>
</data>
<data name="AddInManager2.AddInsView.InstallFromArchive" xml:space="preserve">
<value>Instalar desde archivo...</value>
</data>
<data name="AddInManager2.AddInsView.Repository" xml:space="preserve">
<value>Repositorio:</value>
</data>
<data name="AddInManager2.AddInsView.Search" xml:space="preserve">
<value>Buscar:</value>
</data>
<data name="AddInManager2.AddInsView.ShowPreinstalledAddIns" xml:space="preserve">
<value>Mostrar Addins pre-instalados
</value>
</data>
<data name="AddInManager2.AddInsView.ShowPrereleaseAddIns" xml:space="preserve">
<value>Mostrar versión preliminar</value>
</data>
<data name="AddInManager2.Details.InstalledVersion" xml:space="preserve">
<value>Versión instalada:</value>
</data>
<data name="AddInManager2.OptionPanel.Remove" xml:space="preserve">
<value>Remover</value>
</data>
<data name="AddInManager2.OptionPanel.Source" xml:space="preserve">
<value>Fuente:</value>
</data>
<data name="AddInManager2.OptionPanel.Tree.AddIns" xml:space="preserve">
<value>AddIns</value>
</data>
<data name="AddInManager2.OptionPanel.Tree.Repositories" xml:space="preserve">
<value>Repositorios</value>
</data>
<data name="AddInManager2.RemoveDependentWarning" xml:space="preserve">
<value>Los siguientes AddIns instalados dependen de "{0}":
{1}
Dejarán de funcionar al remover este AddIn! ¿Quiere continuar?</value>
</data>
<data name="AddInManager2.SDAddInFileFilter" xml:space="preserve">
<value>AddIns de SharpDevelop |*.sdaddin;*.addin|Todos los archivos|*.*</value>
</data>
<data name="AddInManager2.Views.Available" xml:space="preserve">
<value>Disponibles</value>
</data>
<data name="AddInManager2.Views.Installed" xml:space="preserve">
<value>Instalados</value>
</data>
<data name="AddInManager2.Views.Updates" xml:space="preserve">
<value>Actualizaciones</value>
</data>
<data name="AddIns.AvalonEdit.InconsistentNewlines.Description" xml:space="preserve">
<value>Este archivo contiene nuevas linea inconsistentes.</value>
</data>
@ -5782,6 +5832,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< @@ -5782,6 +5832,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension<
<data name="SharpDevelop.FileFilter.AllFiles" xml:space="preserve">
<value>Todos los archivos (*.*)</value>
</data>
<data name="SharpDevelop.FileFilter.AllKnownFiles" xml:space="preserve">
<value>Todas las extensiones de archivos conocidas</value>
</data>
<data name="SharpDevelop.FileFilter.AssemblyFiles" xml:space="preserve">
<value>Archivos de Ensamblados (*.exe;*.dll)</value>
</data>

2
data/resources/StringResources.fr.resx

@ -2371,7 +2371,7 @@ Voulez-vous ajouter le nouveau fichier au projet ${CurrentProjectName}?</value> @@ -2371,7 +2371,7 @@ Voulez-vous ajouter le nouveau fichier au projet ${CurrentProjectName}?</value>
<value>Tout processeur</value>
</data>
<data name="Dialog.ProjectOptions.Build.TargetCPU.Any32" xml:space="preserve">
<value>x86/x64 - préfère 64 bits</value>
<value>x86/x64 - préfère 32 bits</value>
</data>
<data name="Dialog.ProjectOptions.Build.TargetCPU.Any64" xml:space="preserve">
<value>x86/x64 - préfère 64 bits</value>

72
data/resources/StringResources.it.resx

@ -1502,6 +1502,9 @@ Ad esempio: "120", "MainClass", "Main.cs, 120".</value> @@ -1502,6 +1502,9 @@ Ad esempio: "120", "MainClass", "Main.cs, 120".</value>
<data name="Dialog.HighlightingEditor.NotSupportedMessage" xml:space="preserve">
<value>Versione delle impostazioni non supportata!</value>
</data>
<data name="Dialog.HighlightingEditor.OverwriteCustomizationsMessage" xml:space="preserve">
<value>Questo comando elimina tutte le personalizzazioni prima di importare i files selezionati. Continuare?</value>
</data>
<data name="Dialog.HighlightingEditor.Properties.Value" xml:space="preserve">
<value>Valore</value>
</data>
@ -1863,6 +1866,12 @@ Vuoi aggiungere il nuovo file al progetto ${CurrentProjectName}?</value> @@ -1863,6 +1866,12 @@ Vuoi aggiungere il nuovo file al progetto ${CurrentProjectName}?</value>
<data name="Dialog.Options.IDEOptions.Debugging" xml:space="preserve">
<value>Debugging</value>
</data>
<data name="Dialog.Options.IDEOptions.Debugging.EnableDecompiler" xml:space="preserve">
<value>Attiva decompilatore</value>
</data>
<data name="Dialog.Options.IDEOptions.Debugging.EnableEditAndContinue" xml:space="preserve">
<value>Attiva Modifica e Continua</value>
</data>
<data name="Dialog.Options.IDEOptions.Debugging.Exceptions" xml:space="preserve">
<value>Eccezioni</value>
</data>
@ -1893,6 +1902,12 @@ Vuoi aggiungere il nuovo file al progetto ${CurrentProjectName}?</value> @@ -1893,6 +1902,12 @@ Vuoi aggiungere il nuovo file al progetto ${CurrentProjectName}?</value>
<data name="Dialog.Options.IDEOptions.Debugging.Stepping.StepOverSingleLineProperties" xml:space="preserve">
<value>Salta le proprietà su linea singola</value>
</data>
<data name="Dialog.Options.IDEOptions.Debugging.SuppressJITOptimization" xml:space="preserve">
<value>Salta ottimizzazione JIT</value>
</data>
<data name="Dialog.Options.IDEOptions.Debugging.SuppressNGENOptimization" xml:space="preserve">
<value>Salta ottimizzazione NGEN</value>
</data>
<data name="Dialog.Options.IDEOptions.Debugging.Symbols" xml:space="preserve">
<value>Simboli</value>
</data>
@ -2353,6 +2368,12 @@ Vuoi aggiungere il nuovo file al progetto ${CurrentProjectName}?</value> @@ -2353,6 +2368,12 @@ Vuoi aggiungere il nuovo file al progetto ${CurrentProjectName}?</value>
<data name="Dialog.ProjectOptions.Build.TargetCPU.Any" xml:space="preserve">
<value>Qualsiasi processore</value>
</data>
<data name="Dialog.ProjectOptions.Build.TargetCPU.Any32" xml:space="preserve">
<value>Quasiasi processore (preferisci 32-bit)</value>
</data>
<data name="Dialog.ProjectOptions.Build.TargetCPU.Any64" xml:space="preserve">
<value>Qualsiasi processore (preferisci 64-bit)</value>
</data>
<data name="Dialog.ProjectOptions.Build.TargetCPU.Itanium" xml:space="preserve">
<value>Processore Intel 64-bit Itanium</value>
</data>
@ -2707,6 +2728,9 @@ Puoi anche scegliere di memorizzare le impostazioni in un file .user invece che @@ -2707,6 +2728,9 @@ Puoi anche scegliere di memorizzare le impostazioni in un file .user invece che
<data name="FormsDesigner.DesignTabPages.SourceTabPage" xml:space="preserve">
<value>Sorgente</value>
</data>
<data name="Gloabl.Advanced" xml:space="preserve">
<value>Avanzate</value>
</data>
<data name="Global.AbortButtonText" xml:space="preserve">
<value>Annulla</value>
</data>
@ -4017,6 +4041,12 @@ Sono ammesse solo lettere, numeri, spazi, '.' o '_'.</value> @@ -4017,6 +4041,12 @@ Sono ammesse solo lettere, numeri, spazi, '.' o '_'.</value>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.Culture.Description" xml:space="preserve">
<value>La cultura supportata dal riferimento</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.EmbedInteropTypes" xml:space="preserve">
<value>Incorpora tipi COM</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.EmbedInteropTypes.Description" xml:space="preserve">
<value>Specifica quale tipi COM presenti nell'assembly referenziato devono essere incorportati nell'assembly di destinazione.</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.LocalCopy" xml:space="preserve">
<value>Copia locale</value>
</data>
@ -4038,6 +4068,9 @@ Sono ammesse solo lettere, numeri, spazi, '.' o '_'.</value> @@ -4038,6 +4068,9 @@ Sono ammesse solo lettere, numeri, spazi, '.' o '_'.</value>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.ReferenceOutputAssembly" xml:space="preserve">
<value>Referenzia assembly</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.ReferenceOutputAssembly.Description" xml:space="preserve">
<value>Se impostato a falso, questo riferimento implica solo una dipendenza nella sequenza di compilazione e non un riferimento all'assembly.</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.SpecificVersion" xml:space="preserve">
<value>Versione Specifica</value>
</data>
@ -5400,6 +5433,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< @@ -5400,6 +5433,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension<
<data name="PortableLibrary.CouldNotFindTools" xml:space="preserve">
<value>Impossibile trovare gli strumenti per Libreria di Classi Portabile</value>
</data>
<data name="PortableLibrary.PortableSubset" xml:space="preserve">
<value>Sottoinsieme Portabile .NET</value>
</data>
<data name="PortableLibrary.SelectAtLeastTwoFrameworks" xml:space="preserve">
<value>Selezionare almeno 2 frameworks.</value>
</data>
@ -6401,6 +6437,24 @@ SharpDevelop 2 compila le risorse differentemente: il nome della risorsa non è @@ -6401,6 +6437,24 @@ SharpDevelop 2 compila le risorse differentemente: il nome della risorsa non è
<data name="Templates.File.NAnt.NAntBuildFile.Name" xml:space="preserve">
<value>File di Build NAnt</value>
</data>
<data name="Templates.File.PRISMViewAndViewModelUnity.Description" xml:space="preserve">
<value>Crea una Vista per un Modulo PRISM ed il relativo Modello</value>
</data>
<data name="Templates.File.PRISMViewAndViewModelUnity.Name" xml:space="preserve">
<value>Vista PRISM e Modello (Unity)</value>
</data>
<data name="Templates.File.PRISMViewModelUnity.Description" xml:space="preserve">
<value>Crea un modello per un Modulo PRISM</value>
</data>
<data name="Templates.File.PRISMViewModelUnity.Name" xml:space="preserve">
<value>Modello PRISM (Unity)</value>
</data>
<data name="Templates.File.PRISMViewUnity.Description" xml:space="preserve">
<value>Crea una Vista per un Modulo PRISM</value>
</data>
<data name="Templates.File.PRISMViewUnity.Name" xml:space="preserve">
<value>Vista PRISM (Unity)</value>
</data>
<data name="Templates.File.Properties.AddIFDEFTest" xml:space="preserve">
<value>Aggiunge '#if TEST ... #endif'</value>
</data>
@ -6671,6 +6725,24 @@ SharpDevelop 2 compila le risorse differentemente: il nome della risorsa non è @@ -6671,6 +6725,24 @@ SharpDevelop 2 compila le risorse differentemente: il nome della risorsa non è
<data name="Templates.Project.PortableLibrary.Name" xml:space="preserve">
<value>Libreria di classi portabile</value>
</data>
<data name="Templates.Project.PRISMApplicationSmallUnity.Description" xml:space="preserve">
<value>Crea una piccola Applicazione Prism con Avvio e Infrastruttura</value>
</data>
<data name="Templates.Project.PRISMApplicationSmallUnity.Name" xml:space="preserve">
<value>Applicazione PRISM - piccola (Unity)</value>
</data>
<data name="Templates.Project.PRISMApplicationUnity.Description" xml:space="preserve">
<value>Crea una Applicazione PRISM con Avvio e Infrastruttura</value>
</data>
<data name="Templates.Project.PRISMApplicationUnity.Name" xml:space="preserve">
<value>Applicazione PRISM (Unity)</value>
</data>
<data name="Templates.Project.PRISMModuleUnity.Description" xml:space="preserve">
<value>Crea un Modulo PRISM con una Vista e relativo Modulo</value>
</data>
<data name="Templates.Project.PRISMModuleUnity.Name" xml:space="preserve">
<value>Modulo PRISM (Unity)</value>
</data>
<data name="Templates.Project.SetupProject.Description" xml:space="preserve">
<value>Un progetto Windows Installer per creare file di installazione MSI.</value>
</data>

142
data/resources/StringResources.nl.resx

@ -228,6 +228,145 @@ @@ -228,6 +228,145 @@
<data name="AddInManager.UnknownFileFormat" xml:space="preserve">
<value>Onbekend bestandsformaat:</value>
</data>
<data name="AddInManager2.AddInsView.InstallFromArchive" xml:space="preserve">
<value>Installeer uit het archief...</value>
</data>
<data name="AddInManager2.AddInsView.Repository" xml:space="preserve">
<value>Repository:</value>
</data>
<data name="AddInManager2.AddInsView.Search" xml:space="preserve">
<value>Zoek:</value>
</data>
<data name="AddInManager2.AddInsView.ShowPreinstalledAddIns" xml:space="preserve">
<value>Geef de voor geïnstalleerde AddIns weer</value>
</data>
<data name="AddInManager2.AddInsView.ShowPrereleaseAddIns" xml:space="preserve">
<value>Pre releases weergeven</value>
</data>
<data name="AddInManager2.CannotRemoveAddInManager" xml:space="preserve">
<value>De AddinManager kan niet verwijderd worden, omdat deze nodig is om invoegtoepassingen te her-installeren.</value>
</data>
<data name="AddInManager2.DefaultRepository" xml:space="preserve">
<value>SharpDevelop AddIn Repository</value>
</data>
<data name="AddInManager2.Details.CreatedBy" xml:space="preserve">
<value>Ontworpen door:</value>
</data>
<data name="AddInManager2.Details.Dependencies" xml:space="preserve">
<value>Afhankelijkheden:</value>
</data>
<data name="AddInManager2.Details.DownloadCount" xml:space="preserve">
<value>Downloads:</value>
</data>
<data name="AddInManager2.Details.FileName" xml:space="preserve">
<value>Bestandsnaam:</value>
</data>
<data name="AddInManager2.Details.InstalledVersion" xml:space="preserve">
<value>Geïnstalleerde versie:</value>
</data>
<data name="AddInManager2.Details.LastUpdated" xml:space="preserve">
<value>Laatste update:</value>
</data>
<data name="AddInManager2.Details.MoreInformation" xml:space="preserve">
<value>Meer informatie</value>
</data>
<data name="AddInManager2.Details.NewVersion" xml:space="preserve">
<value>Nieuwe versie:</value>
</data>
<data name="AddInManager2.Details.Rating" xml:space="preserve">
<value>Waardering:</value>
</data>
<data name="AddInManager2.Details.ReportAbuse" xml:space="preserve">
<value>Rapporteer misbruik</value>
</data>
<data name="AddInManager2.Details.Version" xml:space="preserve">
<value>Versie:</value>
</data>
<data name="AddInManager2.Details.ViewLicenseTerms" xml:space="preserve">
<value>Lezen van de licentie voorwaarden</value>
</data>
<data name="AddInManager2.DisableDependentWarning" xml:space="preserve">
<value>Volgende geïnstalleerde AddIns zijn afhankelijk van "{0}":
{1}
Ze stoppen met werken als deze AddIn uitgeschakeld wordt. Wilt u doorgaan?</value>
</data>
<data name="AddInManager2.InstallDependentMessage" xml:space="preserve">
<value>Package "{0}" heeft tenminste één toegevoegde package nodig:
{1}
De applicatie zal proberen ze te downloaden en te installeren. Wilt u doorgaan?</value>
</data>
<data name="AddInManager2.InvalidPackage" xml:space="preserve">
<value>De geselecteerde package bevat geen geldige SharpDevelop AddIn.</value>
</data>
<data name="AddInManager2.LicenseAcceptance.AcceptButton" xml:space="preserve">
<value>Ik &amp;accepteer</value>
</data>
<data name="AddInManager2.LicenseAcceptance.DeclineButton" xml:space="preserve">
<value>Ik weiger</value>
</data>
<data name="AddInManager2.LicenseAcceptance.Explanation.Package" xml:space="preserve">
<value>Door de "Ik accepteer-accepteer-knop</value>
</data>
<data name="AddInManager2.LicenseAcceptance.Explanation.Packages" xml:space="preserve">
<value>Door de "Accepteren" knop aan te klikken gaat u akkoord met de licentie voorwaarden voor de hierboven vermelde packages.
Als u het niet eens bent met de licentie voorwaarden, klik dan de "Ik weiger" knop!</value>
</data>
<data name="AddInManager2.LicenseAcceptance.Introduction.Package" xml:space="preserve">
<value>Volgende package vereist een akkoord-klik licentie:</value>
</data>
<data name="AddInManager2.LicenseAcceptance.Introduction.Packages" xml:space="preserve">
<value>De volgende packages vereisen een klik-om te-accepteren licentie:</value>
</data>
<data name="AddInManager2.LicenseAcceptance.Title" xml:space="preserve">
<value>Overeengekomen licentie voorwaarden</value>
</data>
<data name="AddInManager2.OptionPanel.Add" xml:space="preserve">
<value>Voeg toe</value>
</data>
<data name="AddInManager2.OptionPanel.MoveDown" xml:space="preserve">
<value>Naar beneden</value>
</data>
<data name="AddInManager2.OptionPanel.MoveUp" xml:space="preserve">
<value>Naar boven</value>
</data>
<data name="AddInManager2.OptionPanel.Name" xml:space="preserve">
<value>Naam:</value>
</data>
<data name="AddInManager2.OptionPanel.Remove" xml:space="preserve">
<value>Verwijderen</value>
</data>
<data name="AddInManager2.OptionPanel.Source" xml:space="preserve">
<value>Broncode:</value>
</data>
<data name="AddInManager2.OptionPanel.Tree.AddIns" xml:space="preserve">
<value>AddIns</value>
</data>
<data name="AddInManager2.OptionPanel.Tree.Repositories" xml:space="preserve">
<value>Repositories</value>
</data>
<data name="AddInManager2.RemoveDependentWarning" xml:space="preserve">
<value>Volgende geïnstalleerde AddIns zijn afhankelijk van "{0}":
{1}
Deze stoppen met werken na verwijderen van deze AddIn.</value>
</data>
<data name="AddInManager2.SDAddInFileFilter" xml:space="preserve">
<value>SharpDevelop AddIns|*.sdaddin;*.addin|Alle bestanden|*.*</value>
</data>
<data name="AddInManager2.Views.Available" xml:space="preserve">
<value>Beschikbaar</value>
</data>
<data name="AddInManager2.Views.Installed" xml:space="preserve">
<value>Geïnstalleerd</value>
</data>
<data name="AddInManager2.Views.Updates" xml:space="preserve">
<value>Updates</value>
</data>
<data name="AddIns.AvalonEdit.InconsistentNewlines.Description" xml:space="preserve">
<value>Dit bestand bevat afwijkende newlines.</value>
</data>
@ -5774,6 +5913,9 @@ Microsoft.Tools.WindowsInstallerXml.Extenties.NetFxCompiler, WixNetFxExtentie</v @@ -5774,6 +5913,9 @@ Microsoft.Tools.WindowsInstallerXml.Extenties.NetFxCompiler, WixNetFxExtentie</v
<data name="SharpDevelop.FileFilter.AllFiles" xml:space="preserve">
<value>Alle bestanden (*.*)</value>
</data>
<data name="SharpDevelop.FileFilter.AllKnownFiles" xml:space="preserve">
<value>Alle bekende bestands extenties</value>
</data>
<data name="SharpDevelop.FileFilter.AssemblyFiles" xml:space="preserve">
<value>Assembly bestanden (*.exe;*.dll)</value>
</data>

149
data/resources/StringResources.resx

@ -229,6 +229,146 @@ Download an AddIn from the Internet, then click 'Install AddIn' and choose the d @@ -229,6 +229,146 @@ Download an AddIn from the Internet, then click 'Install AddIn' and choose the d
<data name="AddInManager.UnknownFileFormat" xml:space="preserve">
<value>Unknown file format:</value>
</data>
<data name="AddInManager2.AddInsView.InstallFromArchive" xml:space="preserve">
<value>Install from archive...</value>
</data>
<data name="AddInManager2.AddInsView.Repository" xml:space="preserve">
<value>Repository:</value>
</data>
<data name="AddInManager2.AddInsView.Search" xml:space="preserve">
<value>Search:</value>
</data>
<data name="AddInManager2.AddInsView.ShowPreinstalledAddIns" xml:space="preserve">
<value>Show preinstalled AddIns</value>
</data>
<data name="AddInManager2.AddInsView.ShowPrereleaseAddIns" xml:space="preserve">
<value>Show prereleases</value>
</data>
<data name="AddInManager2.CannotRemoveAddInManager" xml:space="preserve">
<value>You cannot uninstall the AddInManager because you need it to re-install AddIns!</value>
</data>
<data name="AddInManager2.DefaultRepository" xml:space="preserve">
<value>SharpDevelop AddIn Repository</value>
</data>
<data name="AddInManager2.Details.CreatedBy" xml:space="preserve">
<value>Created by:</value>
</data>
<data name="AddInManager2.Details.Dependencies" xml:space="preserve">
<value>Dependencies:</value>
</data>
<data name="AddInManager2.Details.DownloadCount" xml:space="preserve">
<value>Downloads:</value>
</data>
<data name="AddInManager2.Details.FileName" xml:space="preserve">
<value>File name:</value>
</data>
<data name="AddInManager2.Details.InstalledVersion" xml:space="preserve">
<value>Installed version:</value>
</data>
<data name="AddInManager2.Details.LastUpdated" xml:space="preserve">
<value>Last updated:</value>
</data>
<data name="AddInManager2.Details.MoreInformation" xml:space="preserve">
<value>More information</value>
</data>
<data name="AddInManager2.Details.NewVersion" xml:space="preserve">
<value>New version:</value>
</data>
<data name="AddInManager2.Details.Rating" xml:space="preserve">
<value>Rating:</value>
</data>
<data name="AddInManager2.Details.ReportAbuse" xml:space="preserve">
<value>Report abuse</value>
</data>
<data name="AddInManager2.Details.Version" xml:space="preserve">
<value>Version:</value>
</data>
<data name="AddInManager2.Details.ViewLicenseTerms" xml:space="preserve">
<value>View License Terms</value>
</data>
<data name="AddInManager2.DisableDependentWarning" xml:space="preserve">
<value>Following installed AddIns are dependent from "{0}":
{1}
They will stop working after disabling this AddIn! Are you sure you want to continue?</value>
</data>
<data name="AddInManager2.InstallDependentMessage" xml:space="preserve">
<value>Package "{0}" needs at least one additional package:
{1}
The application will try to download and install them, as well. Do you want to continue?</value>
</data>
<data name="AddInManager2.InvalidPackage" xml:space="preserve">
<value>Selected package doesn't contain a valid SharpDevelop AddIn.</value>
</data>
<data name="AddInManager2.LicenseAcceptance.AcceptButton" xml:space="preserve">
<value>I &amp;Accept</value>
</data>
<data name="AddInManager2.LicenseAcceptance.DeclineButton" xml:space="preserve">
<value>I &amp;Decline</value>
</data>
<data name="AddInManager2.LicenseAcceptance.Explanation.Package" xml:space="preserve">
<value>By clicking "I Accept" you agree to the license terms for the package listed above.
If you do not agree to the license terms click "I Decline".</value>
</data>
<data name="AddInManager2.LicenseAcceptance.Explanation.Packages" xml:space="preserve">
<value>By clicking "I Accept" you agree to the license terms for the packages listed above.
If you do not agree to the license terms click "I Decline".</value>
</data>
<data name="AddInManager2.LicenseAcceptance.Introduction.Package" xml:space="preserve">
<value>The following package requires a click-to-accept license:</value>
</data>
<data name="AddInManager2.LicenseAcceptance.Introduction.Packages" xml:space="preserve">
<value>The following packages require a click-to-accept license:</value>
</data>
<data name="AddInManager2.LicenseAcceptance.Title" xml:space="preserve">
<value>License Agreements</value>
</data>
<data name="AddInManager2.OptionPanel.Add" xml:space="preserve">
<value>Add</value>
</data>
<data name="AddInManager2.OptionPanel.MoveDown" xml:space="preserve">
<value>Move Down</value>
</data>
<data name="AddInManager2.OptionPanel.MoveUp" xml:space="preserve">
<value>Move Up</value>
</data>
<data name="AddInManager2.OptionPanel.Name" xml:space="preserve">
<value>Name:</value>
</data>
<data name="AddInManager2.OptionPanel.Remove" xml:space="preserve">
<value>Remove</value>
</data>
<data name="AddInManager2.OptionPanel.Source" xml:space="preserve">
<value>Source:</value>
</data>
<data name="AddInManager2.OptionPanel.Tree.AddIns" xml:space="preserve">
<value>AddIns</value>
</data>
<data name="AddInManager2.OptionPanel.Tree.Repositories" xml:space="preserve">
<value>Repositories</value>
</data>
<data name="AddInManager2.RemoveDependentWarning" xml:space="preserve">
<value>Following installed AddIns are dependent from "{0}":
{1}
They will stop working after removing this AddIn! Are you sure you want to continue?</value>
</data>
<data name="AddInManager2.SDAddInFileFilter" xml:space="preserve">
<value>SharpDevelop AddIns|*.sdaddin;*.addin|All files|*.*</value>
</data>
<data name="AddInManager2.Views.Available" xml:space="preserve">
<value>Available</value>
</data>
<data name="AddInManager2.Views.Installed" xml:space="preserve">
<value>Installed</value>
</data>
<data name="AddInManager2.Views.Updates" xml:space="preserve">
<value>Updates</value>
</data>
<data name="AddIns.AvalonEdit.InconsistentNewlines.Description" xml:space="preserve">
<value>This file contains inconsistent newlines.</value>
<comment>Description label in inconsitent newlines groupbox</comment>
@ -4712,6 +4852,9 @@ Unable to find 'WelcomeDialogId' in Dialogs.wxs</comment> @@ -4712,6 +4852,9 @@ Unable to find 'WelcomeDialogId' in Dialogs.wxs</comment>
<data name="ICSharpCode.WixBinding.WixNetFxExtensionTitle" xml:space="preserve">
<value>.NET Framework Extension</value>
</data>
<data name="ICSharpCode.WixBinding.WixNotInstalled" xml:space="preserve">
<value>WiX is not installed. Please download WiX from http://wixtoolset.org/</value>
</data>
<data name="ICSharpCode.WixBinding.WixPackageFilesDiffControl.NoDiffFound" xml:space="preserve">
<value>No difference found.</value>
<comment>Message displayed in the Wix diff control to indicate that no differences between the files specified in the Wix setup document and the files on the file system were found.</comment>
@ -6083,6 +6226,9 @@ Removed the end part of the original message ", reason '${Message}'" since this @@ -6083,6 +6226,9 @@ Removed the end part of the original message ", reason '${Message}'" since this
<data name="ResourceEditor.ResourceCodeGeneratorTool.CouldNotGenerateResourceProperty" xml:space="preserve">
<value>Resource code generator: No resource property could be generated for resource '{0}'.</value>
</data>
<data name="ResourceEditor.ResourceEdit.CommentColumn" xml:space="preserve">
<value>Comment</value>
</data>
<data name="ResourceEditor.ResourceEdit.ContentColumn" xml:space="preserve">
<value>Content</value>
</data>
@ -6111,6 +6257,9 @@ Removed the end part of the original message ", reason '${Message}'" since this @@ -6111,6 +6257,9 @@ Removed the end part of the original message ", reason '${Message}'" since this
<data name="SharpDevelop.FileFilter.AllFiles" xml:space="preserve">
<value>All files (*.*)</value>
</data>
<data name="SharpDevelop.FileFilter.AllKnownFiles" xml:space="preserve">
<value>All known file extensions</value>
</data>
<data name="SharpDevelop.FileFilter.AssemblyFiles" xml:space="preserve">
<value>Assembly Files (*.exe;*.dll)</value>
</data>

116
data/resources/StringResources.ru.resx

@ -175,10 +175,10 @@ @@ -175,10 +175,10 @@
<value>Вы не можете отключить Менеджер Плагинов. Он необходим для переподключения Плагинов!</value>
</data>
<data name="AddInManager.CannotInstallIntoApplicationDirectory" xml:space="preserve">
<value>Нельзя устанавливать плагины внутри папки ${ProductName}, так как они будут считаться предустановленными.</value>
<value>Нельзя устанавливать плагины внутри папки ${ProductName},поскольку они являются предустановленными по умолчанию.</value>
</data>
<data name="AddInManager.DescriptionCancelDeinstallation" xml:space="preserve">
<value>Отменяет удаление выделеных плагинов.</value>
<value>Отменяет деинсталляцию выделенных плагинов.</value>
</data>
<data name="AddInManager.DescriptionCancelInstall" xml:space="preserve">
<value>Отменяет установку выделенных плагинов.</value>
@ -229,6 +229,100 @@ @@ -229,6 +229,100 @@
<data name="AddInManager.UnknownFileFormat" xml:space="preserve">
<value>Неизвестный формат файла:</value>
</data>
<data name="AddInManager2.AddInsView.InstallFromArchive" xml:space="preserve">
<value>Установить из архива...</value>
</data>
<data name="AddInManager2.AddInsView.Search" xml:space="preserve">
<value>Поиск:</value>
</data>
<data name="AddInManager2.AddInsView.ShowPreinstalledAddIns" xml:space="preserve">
<value>Показать предустановленные плагины</value>
</data>
<data name="AddInManager2.CannotRemoveAddInManager" xml:space="preserve">
<value>Вы не можете деинсталлировать Менеджер плагинов, поскольку он понадобится для инсталляции плагинов!</value>
</data>
<data name="AddInManager2.Details.CreatedBy" xml:space="preserve">
<value>Создатель:</value>
</data>
<data name="AddInManager2.Details.DownloadCount" xml:space="preserve">
<value>Загрузки:</value>
</data>
<data name="AddInManager2.Details.FileName" xml:space="preserve">
<value>Имя файла:</value>
</data>
<data name="AddInManager2.Details.InstalledVersion" xml:space="preserve">
<value>Установленная версия:</value>
</data>
<data name="AddInManager2.Details.LastUpdated" xml:space="preserve">
<value>Дата последнего обновления:</value>
</data>
<data name="AddInManager2.Details.MoreInformation" xml:space="preserve">
<value>Подробнее:</value>
</data>
<data name="AddInManager2.Details.NewVersion" xml:space="preserve">
<value>Новая версия:</value>
</data>
<data name="AddInManager2.Details.Rating" xml:space="preserve">
<value>Рейтинг:</value>
</data>
<data name="AddInManager2.Details.ReportAbuse" xml:space="preserve">
<value>Пожаловаться:</value>
</data>
<data name="AddInManager2.Details.Version" xml:space="preserve">
<value>Версия:</value>
</data>
<data name="AddInManager2.Details.ViewLicenseTerms" xml:space="preserve">
<value>Прочитать Пользовательское соглашение</value>
</data>
<data name="AddInManager2.InvalidPackage" xml:space="preserve">
<value>В выбранном объекте не содержится правильного SharpDevelop плагина.</value>
</data>
<data name="AddInManager2.LicenseAcceptance.AcceptButton" xml:space="preserve">
<value>Принять</value>
</data>
<data name="AddInManager2.LicenseAcceptance.DeclineButton" xml:space="preserve">
<value>Отказаться</value>
</data>
<data name="AddInManager2.LicenseAcceptance.Title" xml:space="preserve">
<value>Лицензионное соглашение</value>
</data>
<data name="AddInManager2.OptionPanel.Add" xml:space="preserve">
<value>Добавить</value>
</data>
<data name="AddInManager2.OptionPanel.MoveDown" xml:space="preserve">
<value>Сместить вниз</value>
</data>
<data name="AddInManager2.OptionPanel.MoveUp" xml:space="preserve">
<value>Сместить вверх</value>
</data>
<data name="AddInManager2.OptionPanel.Name" xml:space="preserve">
<value>Название:</value>
</data>
<data name="AddInManager2.OptionPanel.Remove" xml:space="preserve">
<value>Удалить</value>
</data>
<data name="AddInManager2.OptionPanel.Source" xml:space="preserve">
<value>Источник:</value>
</data>
<data name="AddInManager2.OptionPanel.Tree.AddIns" xml:space="preserve">
<value>Плагины</value>
</data>
<data name="AddInManager2.RemoveDependentWarning" xml:space="preserve">
<value>Следующие установленные плагины зависят от "{0}":
{1}
Они перестанут работать, если удалить данный плагин! Вы уверены, что хотите продолжить?</value>
</data>
<data name="AddInManager2.Views.Available" xml:space="preserve">
<value>Доступно</value>
</data>
<data name="AddInManager2.Views.Installed" xml:space="preserve">
<value>Установлено</value>
</data>
<data name="AddInManager2.Views.Updates" xml:space="preserve">
<value>Обновления</value>
</data>
<data name="AddIns.ClassDiagram.ShowClassDiagram" xml:space="preserve">
<value>Показать диаграмму классов</value>
</data>
@ -1458,7 +1552,7 @@ @@ -1458,7 +1552,7 @@
<value>Шаблоны файлов</value>
</data>
<data name="Dialog.NewProject.SearchReplace.SearchStringNotFound" xml:space="preserve">
<value>Строка не найдена</value>
<value>Введенная последовательность символов не найдена</value>
</data>
<data name="Dialog.NewProject.SearchReplace.SearchStringNotFound.Title" xml:space="preserve">
<value>Не найдено</value>
@ -3053,6 +3147,9 @@ @@ -3053,6 +3147,9 @@
<data name="ICSharpCode.PythonBinding.SendSelectedTextToPythonConsole" xml:space="preserve">
<value>Отправить в консоль Python</value>
</data>
<data name="ICSharpCode.Refactoring.NoClassUnderCursorError" xml:space="preserve">
<value>В месте нахождения курсора не обнаружено определение типа.</value>
</data>
<data name="ICSharpCode.RubyBinding.SendLineToRubyConsole" xml:space="preserve">
<value>Отправить строку в консоль Ruby</value>
</data>
@ -3694,6 +3791,11 @@ @@ -3694,6 +3791,11 @@
<data name="ICSharpCode.SharpDevelop.Project.UpgradeView.Title" xml:space="preserve">
<value>Обновление проекта</value>
</data>
<data name="ICSharpCode.SharpDevelop.Project.UpgradeView.UpdateOnLoadDueToMissingMSBuild" xml:space="preserve">
<value>Проект '${ProjectName}' ссылается на версию ${OldToolsVersion} MSBuild, но данная версия не установлена.
Хотите ли вы обновить проект до версии ${NewToolsVersion} MSBuild?
Данный проект не может бть открыт без процедуры ибновления.</value>
</data>
<data name="ICSharpCode.SharpDevelop.Project.UpgradeView.UpgradeFromPreviousVersionDescription" xml:space="preserve">
<value>Это решение было создано с помощью предыдущей версии SharpDevelop.
Возможно, вы захотите, преобразовать его так, чтобы использовать новый язык или новые возможности framework'a.</value>
@ -4413,12 +4515,18 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< @@ -4413,12 +4515,18 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension<
<data name="MainWindow.Windows.Debug.Modules.AddressColumn" xml:space="preserve">
<value>Адрес</value>
</data>
<data name="MainWindow.Windows.Debug.Modules.DynamicModule" xml:space="preserve">
<value>(динамический)</value>
</data>
<data name="MainWindow.Windows.Debug.Modules.HasNoSymbols" xml:space="preserve">
<value>Нет загруженных символов.</value>
</data>
<data name="MainWindow.Windows.Debug.Modules.HasSymbols" xml:space="preserve">
<value>Символы загружены.</value>
</data>
<data name="MainWindow.Windows.Debug.Modules.InMemoryModule" xml:space="preserve">
<value>(в памяти)</value>
</data>
<data name="MainWindow.Windows.Debug.Modules.OrderColumn" xml:space="preserve">
<value>Порядок</value>
</data>
@ -5116,7 +5224,7 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< @@ -5116,7 +5224,7 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension<
<value>Текущий метод</value>
</data>
<data name="SharpDevelop.Refactoring.DeclaringType" xml:space="preserve">
<value>Текларирующий тип</value>
<value>Декларирующий тип</value>
</data>
<data name="SharpDevelop.Refactoring.ExpandAutomaticProperty" xml:space="preserve">
<value>Развернуть автосвойство</value>

18
data/resources/StringResources.tr.resx

@ -1871,6 +1871,12 @@ Yeni dosyayı, ${CurrentProjectName} projesine eklemek istiyor musunuz?</value> @@ -1871,6 +1871,12 @@ Yeni dosyayı, ${CurrentProjectName} projesine eklemek istiyor musunuz?</value>
<data name="Dialog.Options.IDEOptions.Debugging" xml:space="preserve">
<value>Hata ayıklama</value>
</data>
<data name="Dialog.Options.IDEOptions.Debugging.EnableDecompiler" xml:space="preserve">
<value>Tekrar derlemeyi etkinleştir</value>
</data>
<data name="Dialog.Options.IDEOptions.Debugging.EnableEditAndContinue" xml:space="preserve">
<value>Düzenle ve Devam eti Etkinleştir</value>
</data>
<data name="Dialog.Options.IDEOptions.Debugging.Exceptions" xml:space="preserve">
<value>İstisnalar</value>
</data>
@ -1901,6 +1907,12 @@ Yeni dosyayı, ${CurrentProjectName} projesine eklemek istiyor musunuz?</value> @@ -1901,6 +1907,12 @@ Yeni dosyayı, ${CurrentProjectName} projesine eklemek istiyor musunuz?</value>
<data name="Dialog.Options.IDEOptions.Debugging.Stepping.StepOverSingleLineProperties" xml:space="preserve">
<value>Tek satır özellikleri üzerinden Adımla</value>
</data>
<data name="Dialog.Options.IDEOptions.Debugging.SuppressJITOptimization" xml:space="preserve">
<value>JIT optimizasyonunu engelle</value>
</data>
<data name="Dialog.Options.IDEOptions.Debugging.SuppressNGENOptimization" xml:space="preserve">
<value>NGEN optimizasyonunu engelle</value>
</data>
<data name="Dialog.Options.IDEOptions.Debugging.Symbols" xml:space="preserve">
<value>Semboller</value>
</data>
@ -2720,6 +2732,9 @@ Ayrıca bir ayarı proje dosyası yerine kullanıcı dosyası(.user-file) içind @@ -2720,6 +2732,9 @@ Ayrıca bir ayarı proje dosyası yerine kullanıcı dosyası(.user-file) içind
<data name="FormsDesigner.DesignTabPages.SourceTabPage" xml:space="preserve">
<value>Kaynak</value>
</data>
<data name="Gloabl.Advanced" xml:space="preserve">
<value>Gelişmiş</value>
</data>
<data name="Global.AbortButtonText" xml:space="preserve">
<value>Başarısız</value>
</data>
@ -5762,6 +5777,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFXCompiler, WixNetFxExtension< @@ -5762,6 +5777,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFXCompiler, WixNetFxExtension<
<data name="SharpDevelop.FileFilter.AllFiles" xml:space="preserve">
<value>Tüm dosyalar (*.*)</value>
</data>
<data name="SharpDevelop.FileFilter.AllKnownFiles" xml:space="preserve">
<value>Bilinen tüm dosya uzantıları</value>
</data>
<data name="SharpDevelop.FileFilter.AssemblyFiles" xml:space="preserve">
<value>Çevirme dosyaları (*.exe, *.dll)</value>
</data>

1
src/AddIns/BackendBindings/FSharpBinding/Templates/FSharp2ConsoleProject.xpt

@ -20,6 +20,7 @@ @@ -20,6 +20,7 @@
<Project language = "F#">
<ProjectItems>
<Reference Include="System" />
<Reference Include="FSharp.Core" />
</ProjectItems>

1
src/AddIns/BackendBindings/FSharpBinding/Templates/FSharp2LibraryProject.xpt

@ -20,6 +20,7 @@ @@ -20,6 +20,7 @@
<Project language = "F#">
<ProjectItems>
<Reference Include="System" />
<Reference Include="FSharp.Core" />
</ProjectItems>

1
src/AddIns/BackendBindings/FSharpBinding/Templates/FSharp3ConsoleProject.xpt

@ -20,6 +20,7 @@ @@ -20,6 +20,7 @@
<Project language = "F#">
<ProjectItems>
<Reference Include="System" />
<Reference Include="FSharp.Core, Version=4.3.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<Private>True</Private>
</Reference>

1
src/AddIns/BackendBindings/FSharpBinding/Templates/FSharp3LibraryProject.xpt

@ -20,6 +20,7 @@ @@ -20,6 +20,7 @@
<Project language = "F#">
<ProjectItems>
<Reference Include="System" />
<Reference Include="FSharp.Core, Version=4.3.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<Private>True</Private>
</Reference>

14
src/AddIns/BackendBindings/WixBinding/Project/Src/Project/WixProject.cs

@ -7,10 +7,11 @@ using System.Collections.ObjectModel; @@ -7,10 +7,11 @@ using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Project;
using Microsoft.Build.Exceptions;
namespace ICSharpCode.WixBinding
{
@ -41,6 +42,17 @@ namespace ICSharpCode.WixBinding @@ -41,6 +42,17 @@ namespace ICSharpCode.WixBinding
SetProperty("OutputType", "Package");
AddWixTargetsPathProperties();
AddImport(DefaultTargetsFile, null);
CheckWixIsInstalled();
}
void CheckWixIsInstalled()
{
try {
ReevaluateIfNecessary();
} catch (InvalidProjectFileException ex) {
LoggingService.Error(ex);
throw new InvalidProjectFileException(StringParser.Parse("${res:ICSharpCode.WixBinding.WixNotInstalled}"));
}
}
void AddWixTargetsPathProperties()

1
src/AddIns/BackendBindings/WixBinding/Project/WixBinding.csproj

@ -40,6 +40,7 @@ @@ -40,6 +40,7 @@
<DebugType>None</DebugType>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.Build" />
<Reference Include="PresentationCore">
<RequiredTargetFramework>3.0</RequiredTargetFramework>
</Reference>

12
src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/InstallPackageCmdlet.cs

@ -44,10 +44,20 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -44,10 +44,20 @@ namespace ICSharpCode.PackageManagement.Cmdlets
[Parameter, Alias("Prerelease")]
public SwitchParameter IncludePrerelease { get; set; }
[Parameter]
public FileConflictAction FileConflictAction { get; set; }
protected override void ProcessRecord()
{
ThrowErrorIfProjectNotOpen();
InstallPackage();
using (IConsoleHostFileConflictResolver resolver = CreateFileConflictResolver()) {
InstallPackage();
}
}
IConsoleHostFileConflictResolver CreateFileConflictResolver()
{
return ConsoleHost.CreateFileConflictResolver(FileConflictAction);
}
void InstallPackage()

6
src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/InvokeProcessPackageActionsCmdlet.cs

@ -36,18 +36,18 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -36,18 +36,18 @@ namespace ICSharpCode.PackageManagement.Cmdlets
void ExecutePackageActions()
{
ProcessPackageAction action = null;
IPackageAction action = null;
while (GetNextAction(out action)) {
Execute(action);
}
}
bool GetNextAction(out ProcessPackageAction action)
bool GetNextAction(out IPackageAction action)
{
return actionsToRun.GetNextAction(out action);
}
void Execute(ProcessPackageAction action)
void Execute(IPackageAction action)
{
action.PackageScriptRunner = this;
action.Execute();

17
src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/UpdatePackageCmdlet.cs

@ -50,10 +50,25 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -50,10 +50,25 @@ namespace ICSharpCode.PackageManagement.Cmdlets
[Parameter, Alias("Prerelease")]
public SwitchParameter IncludePrerelease { get; set; }
[Parameter]
public FileConflictAction FileConflictAction { get; set; }
protected override void ProcessRecord()
{
ThrowErrorIfProjectNotOpen();
using (IConsoleHostFileConflictResolver resolver = CreateFileConflictResolver()) {
RunUpdate();
}
}
IConsoleHostFileConflictResolver CreateFileConflictResolver()
{
return ConsoleHost.CreateFileConflictResolver(FileConflictAction);
}
void RunUpdate()
{
if (HasPackageId()) {
if (HasProjectName()) {
UpdatePackageInSingleProject();

89
src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/InstallPackageCmdletTests.cs

@ -19,7 +19,6 @@ namespace PackageManagement.Cmdlets.Tests @@ -19,7 +19,6 @@ namespace PackageManagement.Cmdlets.Tests
TestableInstallPackageCmdlet cmdlet;
FakeCmdletTerminatingError fakeTerminatingError;
FakePackageManagementProject fakeProject;
FakeInstallPackageAction fakeInstallPackageAction;
void CreateCmdletWithoutActiveProject()
{
@ -27,9 +26,8 @@ namespace PackageManagement.Cmdlets.Tests @@ -27,9 +26,8 @@ namespace PackageManagement.Cmdlets.Tests
fakeTerminatingError = cmdlet.FakeCmdletTerminatingError;
fakeConsoleHost = cmdlet.FakePackageManagementConsoleHost;
fakeProject = fakeConsoleHost.FakeProject;
fakeInstallPackageAction = fakeProject.FakeInstallPackageAction;
}
void CreateCmdletWithActivePackageSourceAndProject()
{
CreateCmdletWithoutActiveProject();
@ -90,8 +88,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -90,8 +88,7 @@ namespace PackageManagement.Cmdlets.Tests
SetIdParameter("Test");
RunCmdlet();
var actualPackageId = fakeInstallPackageAction.PackageId;
string actualPackageId = fakeProject.LastInstallPackageCreated.PackageId;
Assert.AreEqual("Test", actualPackageId);
}
@ -104,8 +101,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -104,8 +101,7 @@ namespace PackageManagement.Cmdlets.Tests
EnableIgnoreDependenciesParameter();
RunCmdlet();
bool result = fakeInstallPackageAction.IgnoreDependencies;
bool result = fakeProject.LastInstallPackageCreated.IgnoreDependencies;
Assert.IsTrue(result);
}
@ -117,8 +113,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -117,8 +113,7 @@ namespace PackageManagement.Cmdlets.Tests
SetIdParameter("Test");
RunCmdlet();
bool result = fakeInstallPackageAction.IgnoreDependencies;
bool result = fakeProject.LastInstallPackageCreated.IgnoreDependencies;
Assert.IsFalse(result);
}
@ -131,8 +126,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -131,8 +126,7 @@ namespace PackageManagement.Cmdlets.Tests
EnablePrereleaseParameter();
RunCmdlet();
bool result = fakeInstallPackageAction.AllowPrereleaseVersions;
bool result = fakeProject.LastInstallPackageCreated.AllowPrereleaseVersions;
Assert.IsTrue(result);
}
@ -144,8 +138,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -144,8 +138,7 @@ namespace PackageManagement.Cmdlets.Tests
SetIdParameter("Test");
RunCmdlet();
bool result = fakeInstallPackageAction.AllowPrereleaseVersions;
bool result = fakeProject.LastInstallPackageCreated.AllowPrereleaseVersions;
Assert.IsFalse(result);
}
@ -158,8 +151,8 @@ namespace PackageManagement.Cmdlets.Tests @@ -158,8 +151,8 @@ namespace PackageManagement.Cmdlets.Tests
SetSourceParameter("http://sharpdevelop.net/packages");
RunCmdlet();
var expected = "http://sharpdevelop.net/packages";
var actual = fakeConsoleHost.PackageSourcePassedToGetProject;
string expected = "http://sharpdevelop.net/packages";
string actual = fakeConsoleHost.PackageSourcePassedToGetProject;
Assert.AreEqual(expected, actual);
}
@ -174,8 +167,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -174,8 +167,7 @@ namespace PackageManagement.Cmdlets.Tests
SetVersionParameter(version);
RunCmdlet();
SemanticVersion actualVersion = fakeInstallPackageAction.PackageVersion;
SemanticVersion actualVersion = fakeProject.LastInstallPackageCreated.PackageVersion;
Assert.AreEqual(version, actualVersion);
}
@ -187,8 +179,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -187,8 +179,7 @@ namespace PackageManagement.Cmdlets.Tests
SetIdParameter("Test");
RunCmdlet();
var actualVersion = fakeInstallPackageAction.PackageVersion;
SemanticVersion actualVersion = fakeProject.LastInstallPackageCreated.PackageVersion;
Assert.IsNull(actualVersion);
}
@ -230,8 +221,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -230,8 +221,7 @@ namespace PackageManagement.Cmdlets.Tests
SetIdParameter("Test");
RunCmdlet();
bool result = fakeInstallPackageAction.IsExecuteCalled;
bool result = fakeProject.LastInstallPackageCreated.IsExecuteCalled;
Assert.IsTrue(result);
}
@ -244,9 +234,62 @@ namespace PackageManagement.Cmdlets.Tests @@ -244,9 +234,62 @@ namespace PackageManagement.Cmdlets.Tests
SetIdParameter("Test");
RunCmdlet();
IPackageScriptRunner scriptRunner = fakeInstallPackageAction.PackageScriptRunner;
IPackageScriptRunner scriptRunner = fakeProject.LastInstallPackageCreated.PackageScriptRunner;
Assert.AreEqual(cmdlet, scriptRunner);
}
[Test]
public void ProcessRecord_FileConflictActionIsOverwrite_FileConflictResolverCreatedWithOverwriteAction()
{
CreateCmdletWithoutActiveProject();
AddDefaultProjectToConsoleHost();
AddPackageSourceToConsoleHost();
SetIdParameter("Test");
cmdlet.FileConflictAction = FileConflictAction.Overwrite;
RunCmdlet();
Assert.AreEqual(FileConflictAction.Overwrite, fakeConsoleHost.LastFileConflictActionUsedWhenCreatingResolver);
}
[Test]
public void ProcessRecord_FileConflictActionIsIgnore_FileConflictResolverCreatedWithIgnoreAction()
{
CreateCmdletWithoutActiveProject();
AddDefaultProjectToConsoleHost();
AddPackageSourceToConsoleHost();
SetIdParameter("Test");
cmdlet.FileConflictAction = FileConflictAction.Ignore;
RunCmdlet();
Assert.AreEqual(FileConflictAction.Ignore, fakeConsoleHost.LastFileConflictActionUsedWhenCreatingResolver);
}
[Test]
public void ProcessRecord_FileConflictActionNotSet_FileConflictResolverCreatedWithNoneFileConflictAction()
{
CreateCmdletWithoutActiveProject();
AddDefaultProjectToConsoleHost();
AddPackageSourceToConsoleHost();
SetIdParameter("Test");
RunCmdlet();
Assert.AreEqual(FileConflictAction.None, fakeConsoleHost.LastFileConflictActionUsedWhenCreatingResolver);
}
[Test]
public void ProcessRecord_PackageIdSpecified_FileConflictResolverIsDisposed()
{
CreateCmdletWithoutActiveProject();
AddDefaultProjectToConsoleHost();
AddPackageSourceToConsoleHost();
SetIdParameter("Test");
RunCmdlet();
fakeConsoleHost.AssertFileConflictResolverIsDisposed();
}
}
}

54
src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/UpdatePackageCmdletTests.cs

@ -715,5 +715,59 @@ namespace PackageManagement.Cmdlets.Tests @@ -715,5 +715,59 @@ namespace PackageManagement.Cmdlets.Tests
Assert.AreEqual(expectedVersion, packageReference.Version);
}
[Test]
public void ProcessRecord_FileConflictActionIsOverwrite_FileConflictResolverCreatedWithOverwriteAction()
{
CreateCmdletWithoutActiveProject();
AddDefaultProjectToConsoleHost();
AddPackageSourceToConsoleHost();
SetIdParameter("Test");
cmdlet.FileConflictAction = FileConflictAction.Overwrite;
RunCmdlet();
Assert.AreEqual(FileConflictAction.Overwrite, fakeConsoleHost.LastFileConflictActionUsedWhenCreatingResolver);
}
[Test]
public void ProcessRecord_FileConflictActionIsIgnore_FileConflictResolverCreatedWithIgnoreAction()
{
CreateCmdletWithoutActiveProject();
AddDefaultProjectToConsoleHost();
AddPackageSourceToConsoleHost();
SetIdParameter("Test");
cmdlet.FileConflictAction = FileConflictAction.Ignore;
RunCmdlet();
Assert.AreEqual(FileConflictAction.Ignore, fakeConsoleHost.LastFileConflictActionUsedWhenCreatingResolver);
}
[Test]
public void ProcessRecord_FileConflictActionNotSet_FileConflictResolverCreatedWithNoneFileConflictAction()
{
CreateCmdletWithoutActiveProject();
AddDefaultProjectToConsoleHost();
AddPackageSourceToConsoleHost();
SetIdParameter("Test");
RunCmdlet();
Assert.AreEqual(FileConflictAction.None, fakeConsoleHost.LastFileConflictActionUsedWhenCreatingResolver);
}
[Test]
public void ProcessRecord_PackageIdSpecified_FileConflictResolverIsDisposed()
{
CreateCmdletWithoutActiveProject();
AddDefaultProjectToConsoleHost();
AddPackageSourceToConsoleHost();
SetIdParameter("Test");
RunCmdlet();
fakeConsoleHost.AssertFileConflictResolverIsDisposed();
}
}
}

29
src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj

@ -147,11 +147,21 @@ @@ -147,11 +147,21 @@
<Compile Include="Src\EnvDTE\TextDocument.cs" />
<Compile Include="Src\EnvDTE\TextPoint.cs" />
<Compile Include="Src\EnvDTE\Window.cs" />
<Compile Include="Src\FileConflictResolver.cs" />
<Compile Include="Src\FileConflictView.xaml.cs">
<DependentUpon>FileConflictView.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Compile Include="Src\FileConflictViewModel.cs" />
<Compile Include="Src\IClassKindUpdater.cs" />
<Compile Include="Src\IDocumentNamespaceCreator.cs" />
<Compile Include="Src\IPackageViewModelParent.cs" />
<Compile Include="Src\IUpdatePackagesAction.cs" />
<Compile Include="Src\IPackageExtensions.cs" />
<Compile Include="Src\IPackageAction.cs" />
<Compile Include="Src\IProjectBuilder.cs" />
<Compile Include="Src\IProjectContentExtensions.cs" />
<Compile Include="Src\IUpdatePackageSettings.cs" />
<Compile Include="Src\IVirtualMethodUpdater.cs" />
<Compile Include="Src\IProjectBrowserUpdater.cs" />
<Compile Include="Src\IRefactoringDocumentView.cs" />
@ -223,7 +233,25 @@ @@ -223,7 +233,25 @@
<Compile Include="Src\MSBuildBasedProjectExtensions.cs" />
<Compile Include="Src\PackageLicenseViewModel.cs" />
<Compile Include="Src\PackageManagementServiceProvider.cs" />
<Compile Include="Src\ParentPackagesOperationEventArgs.cs" />
<Compile Include="Src\ProjectBuilder.cs" />
<Compile Include="Src\ProjectRootElementExtensions.cs" />
<Compile Include="Src\ReducedPackageOperations.cs" />
<Compile Include="Src\ResolveFileConflictEventArgs.cs" />
<Compile Include="Src\Scripting\ConsoleHostFileConflictResolver.cs" />
<Compile Include="Src\Scripting\FileConflictAction.cs" />
<Compile Include="Src\Scripting\GlobalMSBuildProjectCollection.cs" />
<Compile Include="Src\Scripting\IConsoleHostFileConflictResolver.cs" />
<Compile Include="Src\Scripting\IGlobalMSBuildProjectCollection.cs" />
<Compile Include="Src\Scripting\MSBuildProjectImportsMerger.cs" />
<Compile Include="Src\Scripting\MSBuildProjectImportsMergeResult.cs" />
<Compile Include="Src\Scripting\NullGlobalMSBuildProjectCollection.cs" />
<Compile Include="Src\Scripting\RunAllProjectPackageScriptsAction.cs" />
<Compile Include="Src\ServiceWithWorkbenchOwner.cs" />
<Compile Include="Src\SharpDevelopCredentialProvider.cs" />
<Compile Include="Src\UpdatePackagesAction.cs" />
<Compile Include="Src\UpdatePackagesActionFactory.cs" />
<Compile Include="Src\UpdateSolutionPackagesAction.cs" />
<Compile Include="Src\VirtualMethodUpdater.cs" />
<Compile Include="Src\NewProjectsCreated.cs" />
<Compile Include="Src\OpenMSBuildProjects.cs" />
@ -478,6 +506,7 @@ @@ -478,6 +506,7 @@
<Compile Include="Src\VisualStudio\VsSolution.cs" />
</ItemGroup>
<ItemGroup>
<Page Include="Src\FileConflictView.xaml" />
<Page Include="Src\ManagePackagesView.xaml" />
<Page Include="Src\LicenseAcceptanceView.xaml" />
<Page Include="Src\PackageManagementOptionsView.xaml" />

13
src/AddIns/Misc/PackageManagement/Project/Src/AvailablePackagesViewModel.cs

@ -22,6 +22,7 @@ namespace ICSharpCode.PackageManagement @@ -22,6 +22,7 @@ namespace ICSharpCode.PackageManagement
{
IsSearchable = true;
ShowPackageSources = true;
ShowPrerelease = true;
}
protected override void UpdateRepositoryBeforeReadPackagesTaskStarts()
@ -38,14 +39,12 @@ namespace ICSharpCode.PackageManagement @@ -38,14 +39,12 @@ namespace ICSharpCode.PackageManagement
if (repository == null) {
throw new ApplicationException(errorMessage);
}
if (IncludePrerelease) {
return repository.GetPackages();
}
return repository.GetPackages().Where(package => package.IsLatestVersion);
}
public IQueryable<IPackage> CallGetPackagesFromPackageSource()
{
return GetPackagesFromPackageSource();
}
/// <summary>
/// Order packages by most downloaded first.
/// </summary>
@ -56,6 +55,10 @@ namespace ICSharpCode.PackageManagement @@ -56,6 +55,10 @@ namespace ICSharpCode.PackageManagement
protected override IEnumerable<IPackage> GetFilteredPackagesBeforePagingResults(IQueryable<IPackage> allPackages)
{
if (IncludePrerelease) {
return base.GetFilteredPackagesBeforePagingResults(allPackages)
.DistinctLast(PackageEqualityComparer.Id);
}
return base.GetFilteredPackagesBeforePagingResults(allPackages)
.Where(package => package.IsReleaseVersion())
.DistinctLast(PackageEqualityComparer.Id);

18
src/AddIns/Misc/PackageManagement/Project/Src/ConsolePackageActionRunner.cs

@ -30,16 +30,17 @@ namespace ICSharpCode.PackageManagement @@ -30,16 +30,17 @@ namespace ICSharpCode.PackageManagement
this.workbench = workbench;
}
public void Run(ProcessPackageAction action)
public void Run(IPackageAction action)
{
var actions = new List<ProcessPackageAction>();
var actions = new List<IPackageAction>();
actions.Add(action);
Run(actions);
}
public void Run(IEnumerable<ProcessPackageAction> actions)
public void Run(IEnumerable<IPackageAction> actions)
{
CreateConsolePadIfConsoleHostIsNotRunning();
ShowConsolePad();
AddNewActionsToRun(actions);
InvokeProcessPackageActionsCmdlet();
}
@ -51,14 +52,19 @@ namespace ICSharpCode.PackageManagement @@ -51,14 +52,19 @@ namespace ICSharpCode.PackageManagement
}
}
void AddNewActionsToRun(IEnumerable<ProcessPackageAction> actions)
void ShowConsolePad()
{
foreach (ProcessPackageAction action in actions) {
workbench.ShowConsolePad();
}
void AddNewActionsToRun(IEnumerable<IPackageAction> actions)
{
foreach (IPackageAction action in actions) {
AddNewActionToRun(action);
}
}
void AddNewActionToRun(ProcessPackageAction action)
void AddNewActionToRun(IPackageAction action)
{
packageActionsToRun.AddAction(action);
}

15
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeFileSystem.cs

@ -94,5 +94,20 @@ namespace ICSharpCode.PackageManagement.Design @@ -94,5 +94,20 @@ namespace ICSharpCode.PackageManagement.Design
{
throw new NotImplementedException();
}
public void AddFile(string path, Action<Stream> writeToStream)
{
throw new NotImplementedException();
}
public void MakeFileWritable(string path)
{
throw new NotImplementedException();
}
public Stream CreateFile(string path)
{
throw new NotImplementedException();
}
}
}

12
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeInstallPackageAction.cs

@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.PackageManagement.Scripting;
namespace ICSharpCode.PackageManagement.Design
{
@ -27,5 +28,16 @@ namespace ICSharpCode.PackageManagement.Design @@ -27,5 +28,16 @@ namespace ICSharpCode.PackageManagement.Design
protected override void BeforeExecute()
{
}
protected override RunPackageScriptsAction CreateRunPackageScriptsAction(
IPackageScriptRunner scriptRunner,
IPackageManagementProject project)
{
return new RunPackageScriptsAction(
project,
scriptRunner,
new PackageScriptFactory(),
new NullGlobalMSBuildProjectCollection());
}
}
}

16
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackage.cs

@ -178,5 +178,21 @@ namespace ICSharpCode.PackageManagement.Design @@ -178,5 +178,21 @@ namespace ICSharpCode.PackageManagement.Design
{
return SupportedFrameworks;
}
List<PackageReferenceSet> FakePackageAssemblyReferences =
new List<PackageReferenceSet>();
public ICollection<PackageReferenceSet> PackageAssemblyReferences {
get { return FakePackageAssemblyReferences; }
}
public void AddPackageReferences(params string[] names)
{
var frameworkName = new FrameworkName(".NET Framework, Version=4.0");
var packageReferenceSet = new PackageReferenceSet(frameworkName, names);
FakePackageAssemblyReferences.Add(packageReferenceSet);
}
public Version MinClientVersion { get; set; }
}
}

54
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementProject.cs

@ -26,7 +26,7 @@ namespace ICSharpCode.PackageManagement.Design @@ -26,7 +26,7 @@ namespace ICSharpCode.PackageManagement.Design
this.Name = name;
}
public FakeInstallPackageAction FakeInstallPackageAction;
private FakeInstallPackageAction FakeInstallPackageAction;
public FakeUninstallPackageAction FakeUninstallPackageAction;
public FakeUpdatePackageAction FirstFakeUpdatePackageActionCreated {
@ -101,7 +101,7 @@ namespace ICSharpCode.PackageManagement.Design @@ -101,7 +101,7 @@ namespace ICSharpCode.PackageManagement.Design
var package = new FakePackage("MyPackage");
var operation = new FakePackageOperation(package, PackageAction.Uninstall);
FakeInstallOperations.Add(operation);
return operation;
return operation;
}
public FakePackageRepository FakeSourceRepository = new FakePackageRepository();
@ -136,16 +136,19 @@ namespace ICSharpCode.PackageManagement.Design @@ -136,16 +136,19 @@ namespace ICSharpCode.PackageManagement.Design
IsUpdatePackageCalled = true;
}
public FakeInstallPackageAction LastInstallPackageCreated;
public virtual InstallPackageAction CreateInstallPackageAction()
{
return FakeInstallPackageAction;
LastInstallPackageCreated = new FakeInstallPackageAction(this);
return LastInstallPackageCreated;
}
public virtual UninstallPackageAction CreateUninstallPackageAction()
{
return FakeUninstallPackageAction;
}
public UpdatePackageAction CreateUpdatePackageAction()
{
var action = new FakeUpdatePackageAction(this);
@ -213,5 +216,48 @@ namespace ICSharpCode.PackageManagement.Design @@ -213,5 +216,48 @@ namespace ICSharpCode.PackageManagement.Design
{
FakeSourceRepository.AddFakePackage(packageId);
}
public void UpdatePackages(UpdatePackagesAction action)
{
}
public List<UpdatePackagesAction> UpdatePackagesActionsCreated =
new List<UpdatePackagesAction>();
public UpdatePackagesAction CreateUpdatePackagesAction()
{
var action = new UpdatePackagesAction(this, null);
UpdatePackagesActionsCreated.Add(action);
return action;
}
public UpdatePackagesAction UpdatePackagesActionPassedToGetUpdatePackagesOperations;
public IUpdatePackageSettings SettingsPassedToGetUpdatePackagesOperations;
public List<IPackage> PackagesOnUpdatePackagesActionPassedToGetUpdatePackagesOperations;
public List<PackageOperation> PackageOperationsToReturnFromGetUpdatePackagesOperations =
new List<PackageOperation>();
public IEnumerable<PackageOperation> GetUpdatePackagesOperations(
IEnumerable<IPackage> packages,
IUpdatePackageSettings settings)
{
SettingsPassedToGetUpdatePackagesOperations = settings;
PackagesOnUpdatePackagesActionPassedToGetUpdatePackagesOperations = packages.ToList();
return PackageOperationsToReturnFromGetUpdatePackagesOperations;
}
public void RunPackageOperations(IEnumerable<PackageOperation> expectedOperations)
{
}
public bool HasOlderPackageInstalled(IPackage package)
{
return false;
}
public void UpdatePackageReference(IPackage package, IUpdatePackageSettings settings)
{
throw new NotImplementedException();
}
}
}

35
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManager.cs

@ -3,6 +3,7 @@ @@ -3,6 +3,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using ICSharpCode.PackageManagement;
using NuGet;
@ -22,6 +23,8 @@ namespace ICSharpCode.PackageManagement.Design @@ -22,6 +23,8 @@ namespace ICSharpCode.PackageManagement.Design
public IPackage PackagePassedToUninstallPackage;
public UpdatePackagesAction UpdatePackagesActionsPassedToUpdatePackages;
#pragma warning disable 67
public event EventHandler<PackageOperationEventArgs> PackageInstalled;
public event EventHandler<PackageOperationEventArgs> PackageInstalling;
@ -158,5 +161,37 @@ namespace ICSharpCode.PackageManagement.Design @@ -158,5 +161,37 @@ namespace ICSharpCode.PackageManagement.Design
{
throw new NotImplementedException();
}
public void UpdatePackages(UpdatePackagesAction updateAction)
{
UpdatePackagesActionsPassedToUpdatePackages = updateAction;
}
public List<PackageOperation> PackageOperationsToReturnFromGetUpdatePackageOperations = new List<PackageOperation>();
public IUpdatePackageSettings SettingsPassedToGetUpdatePackageOperations;
public IEnumerable<IPackage> PackagesPassedToGetUpdatePackageOperations;
public IEnumerable<PackageOperation> GetUpdatePackageOperations(IEnumerable<IPackage> packages, IUpdatePackageSettings settings)
{
SettingsPassedToGetUpdatePackageOperations = settings;
PackagesPassedToGetUpdatePackageOperations = packages;
return PackageOperationsToReturnFromGetUpdatePackageOperations;
}
public List<PackageOperation> PackageOperationsPassedToRunPackageOperations;
public void RunPackageOperations(IEnumerable<PackageOperation> operations)
{
PackageOperationsPassedToRunPackageOperations = operations.ToList();
}
public IPackage PackagePassedToUpdatePackageReference;
public IUpdatePackageSettings SettingsPassedToUpdatePackageReference;
public void UpdatePackageReference(IPackage package, IUpdatePackageSettings settings)
{
PackagePassedToUpdatePackageReference = package;
SettingsPassedToUpdatePackageReference = settings;
}
}
}

9
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeProjectManager.cs

@ -116,5 +116,14 @@ namespace ICSharpCode.PackageManagement.Design @@ -116,5 +116,14 @@ namespace ICSharpCode.PackageManagement.Design
{
throw new NotImplementedException();
}
public IPackage PackagePassedToHasOlderPackageInstalled;
public bool HasOlderPackageInstalledReturnValue;
public bool HasOlderPackageInstalled(IPackage package)
{
PackagePassedToHasOlderPackageInstalled = package;
return HasOlderPackageInstalledReturnValue;
}
}
}

15
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeProjectSystem.cs

@ -56,5 +56,20 @@ namespace ICSharpCode.PackageManagement.Design @@ -56,5 +56,20 @@ namespace ICSharpCode.PackageManagement.Design
}
public bool IsBindingRedirectSupported { get; set; }
public void AddImport(string targetPath, ProjectImportLocation location)
{
throw new NotImplementedException();
}
public void RemoveImport(string targetPath)
{
throw new NotImplementedException();
}
public bool FileExistsInProject(string path)
{
throw new NotImplementedException();
}
}
}

7
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeRegisteredPackageRepositories.cs

@ -72,7 +72,12 @@ namespace ICSharpCode.PackageManagement.Design @@ -72,7 +72,12 @@ namespace ICSharpCode.PackageManagement.Design
public FakePackage AddFakePackageWithVersionToActiveRepository(string version)
{
var package = FakePackage.CreatePackageWithVersion("Test", version);
return AddFakePackageWithVersionToActiveRepository("Test", version);
}
public FakePackage AddFakePackageWithVersionToActiveRepository(string id, string version)
{
var package = FakePackage.CreatePackageWithVersion(id, version);
FakeActiveRepository.FakePackages.Add(package);
return package;
}

5
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeSelectedProject.cs

@ -42,11 +42,6 @@ namespace ICSharpCode.PackageManagement.Design @@ -42,11 +42,6 @@ namespace ICSharpCode.PackageManagement.Design
return String.Format("Name: {0}, IsSelected: {1}, IsEnabled: {2}", Name, IsSelected, IsEnabled);
}
public FakeInstallPackageAction FakeInstallPackageAction {
get { return FakeProject.FakeInstallPackageAction; }
set { FakeProject.FakeInstallPackageAction = value; }
}
public IPackageManagementProject Project {
get { return FakeProject; }
}

7
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeSettings.cs

@ -128,7 +128,7 @@ namespace ICSharpCode.PackageManagement.Design @@ -128,7 +128,7 @@ namespace ICSharpCode.PackageManagement.Design
public void MakePackageSourceSectionsNull()
{
Sections.Remove(RegisteredPackageSourceSettings.PackageSourcesSectionName);
Sections.Add(RegisteredPackageSourceSettings.PackageSourcesSectionName, null);
Sections.Add(RegisteredPackageSourceSettings.PackageSourcesSectionName, null);
}
public void AddFakePackageSources(IEnumerable<PackageSource> packageSources)
@ -187,5 +187,10 @@ namespace ICSharpCode.PackageManagement.Design @@ -187,5 +187,10 @@ namespace ICSharpCode.PackageManagement.Design
{
throw new NotImplementedException();
}
public IList<KeyValuePair<string, string>> GetValues(string section, bool isPath)
{
throw new NotImplementedException();
}
}
}

12
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeUninstallPackageAction.cs

@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.PackageManagement.Scripting;
namespace ICSharpCode.PackageManagement.Design
{
@ -22,5 +23,16 @@ namespace ICSharpCode.PackageManagement.Design @@ -22,5 +23,16 @@ namespace ICSharpCode.PackageManagement.Design
protected override void BeforeExecute()
{
}
protected override RunPackageScriptsAction CreateRunPackageScriptsAction(
IPackageScriptRunner scriptRunner,
IPackageManagementProject project)
{
return new RunPackageScriptsAction(
project,
scriptRunner,
new PackageScriptFactory(),
new NullGlobalMSBuildProjectCollection());
}
}
}

12
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeUpdatePackageAction.cs

@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.PackageManagement.Scripting;
namespace ICSharpCode.PackageManagement.Design
{
@ -27,5 +28,16 @@ namespace ICSharpCode.PackageManagement.Design @@ -27,5 +28,16 @@ namespace ICSharpCode.PackageManagement.Design
protected override void BeforeExecute()
{
}
protected override RunPackageScriptsAction CreateRunPackageScriptsAction(
IPackageScriptRunner scriptRunner,
IPackageManagementProject project)
{
return new RunPackageScriptsAction(
project,
scriptRunner,
new PackageScriptFactory(),
new NullGlobalMSBuildProjectCollection());
}
}
}

44
src/AddIns/Misc/PackageManagement/Project/Src/FileConflictResolver.cs

@ -0,0 +1,44 @@ @@ -0,0 +1,44 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.Core;
using NuGet;
namespace ICSharpCode.PackageManagement
{
public class FileConflictResolver : ServiceWithWorkbenchOwner, IFileConflictResolver
{
IPackageManagementWorkbench workbench;
public FileConflictResolver()
: this(new PackageManagementWorkbench())
{
}
public FileConflictResolver(IPackageManagementWorkbench workbench)
{
this.workbench = workbench;
}
public FileConflictResolution ResolveFileConflict(string message)
{
if (workbench.InvokeRequired) {
return workbench.SafeThreadFunction(() => ResolveFileConflict(message));
} else {
var viewModel = new FileConflictViewModel(message);
FileConflictView view = CreateFileConflictView(viewModel);
view.ShowDialog();
return viewModel.GetResolution();
}
}
FileConflictView CreateFileConflictView(FileConflictViewModel viewModel)
{
var view = new FileConflictView();
view.ViewModel = viewModel;
view.Owner = Owner;
return view;
}
}
}

63
src/AddIns/Misc/PackageManagement/Project/Src/FileConflictView.xaml

@ -0,0 +1,63 @@ @@ -0,0 +1,63 @@
<Window
x:Class="ICSharpCode.PackageManagement.FileConflictView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:core="http://icsharpcode.net/sharpdevelop/core"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="File Conflict"
FocusManager.FocusedElement="{Binding ElementName=NoButton}"
WindowStartupLocation="CenterOwner"
Style="{x:Static core:GlobalStyles.DialogWindowStyle}"
MinHeight="150"
Height="150"
MinWidth="400"
Width="200">
<Window.Resources>
<Style TargetType="Button" BasedOn="{x:Static core:GlobalStyles.ButtonStyle}"/>
</Window.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock
Margin="5"
Text="{Binding Message}"
Grid.ColumnSpan="5"
TextWrapping="Wrap"/>
<Button
Margin="4"
Grid.Row="1"
Grid.Column="1"
Command="{Binding YesCommand}"
Content="Yes"/>
<Button
Margin="4"
Grid.Row="1"
Grid.Column="2"
Command="{Binding YesToAllCommand}"
Content="Yes to All"/>
<Button
x:Name="NoButton"
Margin="4"
Grid.Row="1"
Grid.Column="3"
IsDefault="True"
Command="{Binding NoCommand}"
Content="No"/>
<Button
Margin="4"
Grid.Row="1"
Grid.Column="4"
Command="{Binding NoToAllCommand}"
Content="No to All"/>
</Grid>
</Window>

32
src/AddIns/Misc/PackageManagement/Project/Src/FileConflictView.xaml.cs

@ -0,0 +1,32 @@ @@ -0,0 +1,32 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Windows;
namespace ICSharpCode.PackageManagement
{
public partial class FileConflictView : Window
{
FileConflictViewModel viewModel;
public FileConflictView()
{
InitializeComponent();
}
public FileConflictViewModel ViewModel {
get { return viewModel; }
set {
viewModel = value;
viewModel.Close += CloseView;
DataContext = viewModel;
}
}
void CloseView(object sender, EventArgs e)
{
DialogResult = true;
}
}
}

48
src/AddIns/Misc/PackageManagement/Project/Src/FileConflictViewModel.cs

@ -0,0 +1,48 @@ @@ -0,0 +1,48 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Windows.Input;
using NuGet;
namespace ICSharpCode.PackageManagement
{
public class FileConflictViewModel
{
FileConflictResolution resolution = FileConflictResolution.Ignore;
public FileConflictViewModel(string message)
{
this.Message = message;
CreateCommands();
}
void CreateCommands()
{
YesCommand = new DelegateCommand(param => UpdateResolution(FileConflictResolution.Overwrite));
YesToAllCommand = new DelegateCommand(param => UpdateResolution(FileConflictResolution.OverwriteAll));
NoCommand = new DelegateCommand(param => UpdateResolution(FileConflictResolution.Ignore));
NoToAllCommand = new DelegateCommand(param => UpdateResolution(FileConflictResolution.IgnoreAll));
}
void UpdateResolution(FileConflictResolution resolution)
{
this.resolution = resolution;
Close(this, new EventArgs());
}
public event EventHandler Close;
public ICommand YesCommand { get; private set; }
public ICommand YesToAllCommand { get; private set; }
public ICommand NoCommand { get; private set; }
public ICommand NoToAllCommand { get; private set; }
public string Message { get; private set; }
public FileConflictResolution GetResolution()
{
return resolution;
}
}
}

15
src/AddIns/Misc/PackageManagement/Project/Src/IPackageAction.cs

@ -0,0 +1,15 @@ @@ -0,0 +1,15 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.PackageManagement.Scripting;
namespace ICSharpCode.PackageManagement
{
public interface IPackageAction
{
void Execute();
bool HasPackageScriptsToRun();
IPackageScriptRunner PackageScriptRunner { get; set; }
}
}

4
src/AddIns/Misc/PackageManagement/Project/Src/IPackageActionRunner.cs

@ -8,7 +8,7 @@ namespace ICSharpCode.PackageManagement @@ -8,7 +8,7 @@ namespace ICSharpCode.PackageManagement
{
public interface IPackageActionRunner
{
void Run(ProcessPackageAction action);
void Run(IEnumerable<ProcessPackageAction> actions);
void Run(IPackageAction action);
void Run(IEnumerable<IPackageAction> actions);
}
}

8
src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementEvents.cs

@ -12,17 +12,21 @@ namespace ICSharpCode.PackageManagement @@ -12,17 +12,21 @@ namespace ICSharpCode.PackageManagement
event EventHandler PackageOperationsStarting;
event EventHandler<AcceptLicensesEventArgs> AcceptLicenses;
event EventHandler<SelectProjectsEventArgs> SelectProjects;
event EventHandler<ResolveFileConflictEventArgs> ResolveFileConflict;
event EventHandler<PackageOperationExceptionEventArgs> PackageOperationError;
event EventHandler<ParentPackageOperationEventArgs> ParentPackageInstalled;
event EventHandler<ParentPackageOperationEventArgs> ParentPackageUninstalled;
event EventHandler<ParentPackagesOperationEventArgs> ParentPackagesUpdated;
event EventHandler<PackageOperationMessageLoggedEventArgs> PackageOperationMessageLogged;
void OnPackageOperationsStarting();
void OnPackageOperationsStarting();
void OnPackageOperationError(Exception ex);
bool OnAcceptLicenses(IEnumerable<IPackage> packages);
void OnParentPackageInstalled(IPackage package);
void OnParentPackageUninstalled(IPackage package);
void OnParentPackagesUpdated(IEnumerable<IPackage> packages);
void OnPackageOperationMessageLogged(MessageLevel level, string message, params object[] args);
bool OnSelectProjects(IEnumerable<IPackageManagementSelectedProject> selectedProjects);
FileConflictResolution OnResolveFileConflict(string message);
}
}

8
src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementProject.cs

@ -25,18 +25,26 @@ namespace ICSharpCode.PackageManagement @@ -25,18 +25,26 @@ namespace ICSharpCode.PackageManagement
bool IsPackageInstalled(IPackage package);
bool IsPackageInstalled(string packageId);
bool HasOlderPackageInstalled(IPackage package);
IQueryable<IPackage> GetPackages();
IEnumerable<IPackage> GetPackagesInReverseDependencyOrder();
IEnumerable<PackageOperation> GetInstallPackageOperations(IPackage package, InstallPackageAction installAction);
IEnumerable<PackageOperation> GetUpdatePackagesOperations(IEnumerable<IPackage> packages, IUpdatePackageSettings settings);
void InstallPackage(IPackage package, InstallPackageAction installAction);
void UpdatePackage(IPackage package, UpdatePackageAction updateAction);
void UninstallPackage(IPackage package, UninstallPackageAction uninstallAction);
void UpdatePackages(UpdatePackagesAction action);
void UpdatePackageReference(IPackage package, IUpdatePackageSettings settings);
InstallPackageAction CreateInstallPackageAction();
UninstallPackageAction CreateUninstallPackageAction();
UpdatePackageAction CreateUpdatePackageAction();
UpdatePackagesAction CreateUpdatePackagesAction();
void RunPackageOperations(IEnumerable<PackageOperation> expectedOperations);
}
}

3
src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementWorkbench.cs

@ -11,6 +11,9 @@ namespace ICSharpCode.PackageManagement @@ -11,6 +11,9 @@ namespace ICSharpCode.PackageManagement
void SafeThreadAsyncCall<A>(Action<A> method, A arg1);
void SafeThreadAsyncCall<A, B>(Action<A, B> method, A arg1, B arg2);
R SafeThreadFunction<R>(Func<R> method);
void CreateConsolePad();
void ShowConsolePad();
}
}

6
src/AddIns/Misc/PackageManagement/Project/Src/IPackageOperationResolverFactory.cs

@ -13,5 +13,11 @@ namespace ICSharpCode.PackageManagement @@ -13,5 +13,11 @@ namespace ICSharpCode.PackageManagement
IPackageRepository sourceRepository,
ILogger logger,
InstallPackageAction installAction);
IPackageOperationResolver CreateUpdatePackageOperationResolver(
IPackageRepository localRepository,
IPackageRepository sourceRepository,
ILogger logger,
IUpdatePackageSettings settings);
}
}

3
src/AddIns/Misc/PackageManagement/Project/Src/IPackageViewModelFactory.cs

@ -9,11 +9,12 @@ namespace ICSharpCode.PackageManagement @@ -9,11 +9,12 @@ namespace ICSharpCode.PackageManagement
{
public interface IPackageViewModelFactory
{
PackageViewModel CreatePackageViewModel(IPackageFromRepository package);
PackageViewModel CreatePackageViewModel(IPackageViewModelParent parent, IPackageFromRepository package);
IPackageManagementSolution Solution { get; }
PackageManagementSelectedProjects SelectedProjects { get; }
IPackageManagementEvents PackageManagementEvents { get; }
IPackageActionRunner PackageActionRunner { get; }
ILogger Logger { get; }
}
}

12
src/AddIns/Misc/PackageManagement/Project/Src/IPackageViewModelParent.cs

@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
namespace ICSharpCode.PackageManagement
{
public interface IPackageViewModelParent
{
bool IncludePrerelease { get; }
}
}

5
src/AddIns/Misc/PackageManagement/Project/Src/ISharpDevelopPackageManager.cs

@ -14,7 +14,12 @@ namespace ICSharpCode.PackageManagement @@ -14,7 +14,12 @@ namespace ICSharpCode.PackageManagement
void InstallPackage(IPackage package, InstallPackageAction installAction);
void UninstallPackage(IPackage package, UninstallPackageAction uninstallAction);
void UpdatePackage(IPackage package, UpdatePackageAction updateAction);
void UpdatePackages(UpdatePackagesAction updateAction);
void UpdatePackageReference(IPackage package, IUpdatePackageSettings settings);
IEnumerable<PackageOperation> GetInstallPackageOperations(IPackage package, InstallPackageAction installAction);
IEnumerable<PackageOperation> GetUpdatePackageOperations(IEnumerable<IPackage> packages, IUpdatePackageSettings settings);
void RunPackageOperations(IEnumerable<PackageOperation> operations);
}
}

1
src/AddIns/Misc/PackageManagement/Project/Src/ISharpDevelopProjectManager.cs

@ -10,5 +10,6 @@ namespace ICSharpCode.PackageManagement @@ -10,5 +10,6 @@ namespace ICSharpCode.PackageManagement
{
IPackagePathResolver PathResolver { get; }
bool IsInstalled(string packageId);
bool HasOlderPackageInstalled(IPackage package);
}
}

4
src/AddIns/Misc/PackageManagement/Project/Src/IUpdatePackageActions.cs

@ -7,10 +7,8 @@ using ICSharpCode.PackageManagement.Scripting; @@ -7,10 +7,8 @@ using ICSharpCode.PackageManagement.Scripting;
namespace ICSharpCode.PackageManagement
{
public interface IUpdatePackageActions
public interface IUpdatePackageActions : IUpdatePackageSettings
{
bool UpdateDependencies { get; set; }
bool AllowPrereleaseVersions { get; set; }
IPackageScriptRunner PackageScriptRunner { get; set; }
IEnumerable<UpdatePackageAction> CreateActions();

13
src/AddIns/Misc/PackageManagement/Project/Src/IUpdatePackageSettings.cs

@ -0,0 +1,13 @@ @@ -0,0 +1,13 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
namespace ICSharpCode.PackageManagement
{
public interface IUpdatePackageSettings
{
bool UpdateDependencies { get; set; }
bool AllowPrereleaseVersions { get; set; }
}
}

18
src/AddIns/Misc/PackageManagement/Project/Src/IUpdatePackagesAction.cs

@ -0,0 +1,18 @@ @@ -0,0 +1,18 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using NuGet;
namespace ICSharpCode.PackageManagement
{
public interface IUpdatePackagesAction : IPackageAction, IUpdatePackageSettings
{
IEnumerable<PackageOperation> Operations { get; }
ILogger Logger { get; set; }
void AddPackages(IEnumerable<IPackageFromRepository> packages);
void AddOperations(IEnumerable<PackageOperation> operations);
}
}

3
src/AddIns/Misc/PackageManagement/Project/Src/InstalledPackageViewModel.cs

@ -10,12 +10,13 @@ namespace ICSharpCode.PackageManagement @@ -10,12 +10,13 @@ namespace ICSharpCode.PackageManagement
public class InstalledPackageViewModel : PackageViewModel
{
public InstalledPackageViewModel(
IPackageViewModelParent parent,
IPackageFromRepository package,
SelectedProjectsForInstalledPackages selectedProjects,
IPackageManagementEvents packageManagementEvents,
IPackageActionRunner actionRunner,
ILogger logger)
: base(package, selectedProjects, packageManagementEvents, actionRunner, logger)
: base(parent, package, selectedProjects, packageManagementEvents, actionRunner, logger)
{
}

3
src/AddIns/Misc/PackageManagement/Project/Src/InstalledPackageViewModelFactory.cs

@ -15,9 +15,10 @@ namespace ICSharpCode.PackageManagement @@ -15,9 +15,10 @@ namespace ICSharpCode.PackageManagement
selectedProjectsForInstalledPackages = new SelectedProjectsForInstalledPackages(Solution);
}
public override PackageViewModel CreatePackageViewModel(IPackageFromRepository package)
public override PackageViewModel CreatePackageViewModel(IPackageViewModelParent parent, IPackageFromRepository package)
{
return new InstalledPackageViewModel(
parent,
package,
selectedProjectsForInstalledPackages,
PackageManagementEvents,

11
src/AddIns/Misc/PackageManagement/Project/Src/InstalledPackagesViewModel.cs

@ -25,12 +25,18 @@ namespace ICSharpCode.PackageManagement @@ -25,12 +25,18 @@ namespace ICSharpCode.PackageManagement
{
this.solution = solution;
this.packageManagementEvents = packageManagementEvents;
packageManagementEvents.ParentPackageInstalled += InstalledPackagesChanged;
packageManagementEvents.ParentPackageUninstalled += InstalledPackagesChanged;
RegisterEvents();
TryGetActiveProject();
}
void RegisterEvents()
{
packageManagementEvents.ParentPackageInstalled += InstalledPackagesChanged;
packageManagementEvents.ParentPackageUninstalled += InstalledPackagesChanged;
packageManagementEvents.ParentPackagesUpdated += InstalledPackagesChanged;
}
void TryGetActiveProject()
{
try {
@ -49,6 +55,7 @@ namespace ICSharpCode.PackageManagement @@ -49,6 +55,7 @@ namespace ICSharpCode.PackageManagement
{
packageManagementEvents.ParentPackageInstalled -= InstalledPackagesChanged;
packageManagementEvents.ParentPackageUninstalled -= InstalledPackagesChanged;
packageManagementEvents.ParentPackagesUpdated -= InstalledPackagesChanged;
}
protected override IQueryable<IPackage> GetAllPackages()

14
src/AddIns/Misc/PackageManagement/Project/Src/LicenseAcceptanceService.cs

@ -10,20 +10,8 @@ using NuGet; @@ -10,20 +10,8 @@ using NuGet;
namespace ICSharpCode.PackageManagement
{
public class LicenseAcceptanceService : ILicenseAcceptanceService
public class LicenseAcceptanceService : ServiceWithWorkbenchOwner, ILicenseAcceptanceService
{
Window owner;
public Window Owner {
get {
if (owner == null) {
owner = WorkbenchSingleton.MainWindow;
}
return owner;
}
set { owner = value; }
}
public bool AcceptLicenses(IEnumerable<IPackage> packages)
{
LicenseAcceptanceView view = CreateLicenseAcceptanceView(packages);

2
src/AddIns/Misc/PackageManagement/Project/Src/LicenseAcceptanceView.xaml

@ -38,7 +38,7 @@ @@ -38,7 +38,7 @@
<TextBlock Text="View License Terms"/>
</Hyperlink>
</TextBlock>
</StackPanel>
</StackPanel>
<TextBlock
Grid.Column="1"
Margin="4"

62
src/AddIns/Misc/PackageManagement/Project/Src/MSBuildBasedProjectExtensions.cs

@ -2,7 +2,10 @@ @@ -2,7 +2,10 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Linq;
using ICSharpCode.SharpDevelop.Project;
using Microsoft.Build.Construction;
using NuGet;
namespace ICSharpCode.PackageManagement
{
@ -15,5 +18,64 @@ namespace ICSharpCode.PackageManagement @@ -15,5 +18,64 @@ namespace ICSharpCode.PackageManagement
{
return project.HasProjectType(WebApplication) || project.HasProjectType(WebSite);
}
public static void AddImportIfMissing(
this MSBuildBasedProject project,
string importedProjectFile,
ProjectImportLocation importLocation)
{
lock (project.SyncRoot) {
if (project.ImportExists(importedProjectFile))
return;
ProjectImportElement import = AddImport(project.MSBuildProjectFile, importedProjectFile, importLocation);
import.Condition = GetCondition(importedProjectFile);
}
}
static ProjectImportElement AddImport(
ProjectRootElement projectRoot,
string importedProjectFile,
ProjectImportLocation importLocation)
{
if (importLocation == ProjectImportLocation.Top) {
return AddImportAtTop(projectRoot, importedProjectFile);
}
return projectRoot.AddImport(importedProjectFile);
}
static ProjectImportElement AddImportAtTop(ProjectRootElement projectRoot, string importedProjectFile)
{
ProjectImportElement import = projectRoot.CreateImportElement(importedProjectFile);
projectRoot.InsertBeforeChild(import, projectRoot.FirstChild);
return import;
}
static string GetCondition(string importedProjectFile)
{
return String.Format("Exists('{0}')", importedProjectFile);
}
public static bool ImportExists(this MSBuildBasedProject project, string importedProjectFile)
{
lock (project.SyncRoot) {
return project.FindImport(importedProjectFile) != null;
}
}
public static void RemoveImport(this MSBuildBasedProject project, string importedProjectFile)
{
lock (project.SyncRoot) {
ProjectImportElement import = project.FindImport(importedProjectFile);
if (import != null) {
import.Parent.RemoveChild(import);
}
}
}
static ProjectImportElement FindImport(this MSBuildBasedProject project, string importedProjectFile)
{
return project.MSBuildProjectFile.FindImport(importedProjectFile);
}
}
}

44
src/AddIns/Misc/PackageManagement/Project/Src/ManagePackagesUserPrompts.cs

@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using NuGet;
namespace ICSharpCode.PackageManagement
{
@ -10,31 +11,44 @@ namespace ICSharpCode.PackageManagement @@ -10,31 +11,44 @@ namespace ICSharpCode.PackageManagement
ILicenseAcceptanceService licenseAcceptanceService;
ISelectProjectsService selectProjectsService;
IPackageManagementEvents packageManagementEvents;
IFileConflictResolver fileConflictResolver;
FileConflictResolution lastFileConflictResolution;
public ManagePackagesUserPrompts(IPackageManagementEvents packageManagementEvents)
: this(
packageManagementEvents,
new LicenseAcceptanceService(),
new SelectProjectsService())
new SelectProjectsService(),
new FileConflictResolver())
{
}
public ManagePackagesUserPrompts(
IPackageManagementEvents packageManagementEvents,
ILicenseAcceptanceService licenseAcceptanceService,
ISelectProjectsService selectProjectsService)
ISelectProjectsService selectProjectsService,
IFileConflictResolver fileConflictResolver)
{
this.packageManagementEvents = packageManagementEvents;
this.licenseAcceptanceService = licenseAcceptanceService;
this.selectProjectsService = selectProjectsService;
this.fileConflictResolver = fileConflictResolver;
ResetFileConflictResolution();
SubscribeToEvents();
}
void ResetFileConflictResolution()
{
lastFileConflictResolution = FileConflictResolution.Overwrite;
}
void SubscribeToEvents()
{
packageManagementEvents.AcceptLicenses += AcceptLicenses;
packageManagementEvents.AcceptLicenses += AcceptLicenses;
packageManagementEvents.SelectProjects += SelectProjects;
packageManagementEvents.ResolveFileConflict += ResolveFileConflict;
packageManagementEvents.PackageOperationsStarting += PackageOperationsStarting;
}
void AcceptLicenses(object sender, AcceptLicensesEventArgs e)
@ -47,6 +61,28 @@ namespace ICSharpCode.PackageManagement @@ -47,6 +61,28 @@ namespace ICSharpCode.PackageManagement
e.IsAccepted = selectProjectsService.SelectProjects(e.SelectedProjects);
}
void ResolveFileConflict(object sender, ResolveFileConflictEventArgs e)
{
if (UserPreviouslySelectedOverwriteAllOrIgnoreAll()) {
e.Resolution = lastFileConflictResolution;
} else {
e.Resolution = fileConflictResolver.ResolveFileConflict(e.Message);
lastFileConflictResolution = e.Resolution;
}
}
bool UserPreviouslySelectedOverwriteAllOrIgnoreAll()
{
return
(lastFileConflictResolution == FileConflictResolution.IgnoreAll) ||
(lastFileConflictResolution == FileConflictResolution.OverwriteAll);
}
void PackageOperationsStarting(object sender, EventArgs e)
{
ResetFileConflictResolution();
}
public void Dispose()
{
UnsubscribeFromEvents();
@ -56,6 +92,8 @@ namespace ICSharpCode.PackageManagement @@ -56,6 +92,8 @@ namespace ICSharpCode.PackageManagement
{
packageManagementEvents.SelectProjects -= SelectProjects;
packageManagementEvents.AcceptLicenses -= AcceptLicenses;
packageManagementEvents.ResolveFileConflict -= ResolveFileConflict;
packageManagementEvents.PackageOperationsStarting -= PackageOperationsStarting;
}
}
}

10
src/AddIns/Misc/PackageManagement/Project/Src/PackageActionRunner.cs

@ -31,7 +31,7 @@ namespace ICSharpCode.PackageManagement @@ -31,7 +31,7 @@ namespace ICSharpCode.PackageManagement
this.powerShellDetection = powerShellDetection;
}
public void Run(IEnumerable<ProcessPackageAction> actions)
public void Run(IEnumerable<IPackageAction> actions)
{
if (ShouldRunActionsInConsole(actions)) {
consolePackageActionRunner.Run(actions);
@ -42,9 +42,9 @@ namespace ICSharpCode.PackageManagement @@ -42,9 +42,9 @@ namespace ICSharpCode.PackageManagement
}
}
bool ShouldRunActionsInConsole(IEnumerable<ProcessPackageAction> actions)
bool ShouldRunActionsInConsole(IEnumerable<IPackageAction> actions)
{
foreach (ProcessPackageAction action in actions) {
foreach (IPackageAction action in actions) {
if (ShouldRunActionInConsole(action)) {
return true;
}
@ -52,7 +52,7 @@ namespace ICSharpCode.PackageManagement @@ -52,7 +52,7 @@ namespace ICSharpCode.PackageManagement
return false;
}
public void Run(ProcessPackageAction action)
public void Run(IPackageAction action)
{
if (ShouldRunActionInConsole(action)) {
consolePackageActionRunner.Run(action);
@ -61,7 +61,7 @@ namespace ICSharpCode.PackageManagement @@ -61,7 +61,7 @@ namespace ICSharpCode.PackageManagement
}
}
bool ShouldRunActionInConsole(ProcessPackageAction action)
bool ShouldRunActionInConsole(IPackageAction action)
{
if (action.HasPackageScriptsToRun()) {
if (powerShellDetection.IsPowerShell2Installed()) {

6
src/AddIns/Misc/PackageManagement/Project/Src/PackageActionsToRun.cs

@ -8,14 +8,14 @@ namespace ICSharpCode.PackageManagement @@ -8,14 +8,14 @@ namespace ICSharpCode.PackageManagement
{
public class PackageActionsToRun
{
ConcurrentQueue<ProcessPackageAction> actions = new ConcurrentQueue<ProcessPackageAction>();
ConcurrentQueue<IPackageAction> actions = new ConcurrentQueue<IPackageAction>();
public bool GetNextAction(out ProcessPackageAction action)
public bool GetNextAction(out IPackageAction action)
{
return actions.TryDequeue(out action);
}
public void AddAction(ProcessPackageAction action)
public void AddAction(IPackageAction action)
{
actions.Enqueue(action);
}

8
src/AddIns/Misc/PackageManagement/Project/Src/PackageFromRepository.cs

@ -174,5 +174,13 @@ namespace ICSharpCode.PackageManagement @@ -174,5 +174,13 @@ namespace ICSharpCode.PackageManagement
{
return package.ToString();
}
public ICollection<PackageReferenceSet> PackageAssemblyReferences {
get { return package.PackageAssemblyReferences; }
}
public Version MinClientVersion {
get { return package.MinClientVersion; }
}
}
}

21
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementEvents.cs

@ -78,5 +78,26 @@ namespace ICSharpCode.PackageManagement @@ -78,5 +78,26 @@ namespace ICSharpCode.PackageManagement
}
return true;
}
public event EventHandler<ResolveFileConflictEventArgs> ResolveFileConflict;
public FileConflictResolution OnResolveFileConflict(string message)
{
if (ResolveFileConflict != null) {
var eventArgs = new ResolveFileConflictEventArgs(message);
ResolveFileConflict(this, eventArgs);
return eventArgs.Resolution;
}
return FileConflictResolution.IgnoreAll;
}
public event EventHandler<ParentPackagesOperationEventArgs> ParentPackagesUpdated;
public void OnParentPackagesUpdated(IEnumerable<IPackage> packages)
{
if (ParentPackagesUpdated != null) {
ParentPackagesUpdated(this, new ParentPackagesOperationEventArgs(packages));
}
}
}
}

5
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementLogger.cs

@ -19,5 +19,10 @@ namespace ICSharpCode.PackageManagement @@ -19,5 +19,10 @@ namespace ICSharpCode.PackageManagement
{
packageManagementEvents.OnPackageOperationMessageLogged(level, message, args);
}
public FileConflictResolution ResolveFileConflict(string message)
{
return packageManagementEvents.OnResolveFileConflict(message);
}
}
}

32
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementProject.cs

@ -131,5 +131,37 @@ namespace ICSharpCode.PackageManagement @@ -131,5 +131,37 @@ namespace ICSharpCode.PackageManagement
.GetPackagesByDependencyOrder(projectManager.LocalRepository)
.Reverse();
}
public void UpdatePackages(UpdatePackagesAction updateAction)
{
packageManager.UpdatePackages(updateAction);
}
public UpdatePackagesAction CreateUpdatePackagesAction()
{
return new UpdatePackagesAction(this, packageManagementEvents);
}
public IEnumerable<PackageOperation> GetUpdatePackagesOperations(
IEnumerable<IPackage> packages,
IUpdatePackageSettings settings)
{
return packageManager.GetUpdatePackageOperations(packages, settings);
}
public void RunPackageOperations(IEnumerable<PackageOperation> operations)
{
packageManager.RunPackageOperations(operations);
}
public bool HasOlderPackageInstalled(IPackage package)
{
return projectManager.HasOlderPackageInstalled(package);
}
public void UpdatePackageReference(IPackage package, IUpdatePackageSettings settings)
{
packageManager.UpdatePackageReference(package, settings);
}
}
}

21
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementSelectedProjects.cs

@ -13,16 +13,17 @@ namespace ICSharpCode.PackageManagement @@ -13,16 +13,17 @@ namespace ICSharpCode.PackageManagement
{
public class PackageManagementSelectedProjects
{
IPackageManagementSolution solution;
bool? singleProjectSelected;
IProject singleMSBuildProjectSelected;
public PackageManagementSelectedProjects(IPackageManagementSolution solution)
{
this.solution = solution;
this.Solution = solution;
GetHasSingleProjectSelected();
}
public IPackageManagementSolution Solution { get; private set; }
public IEnumerable<IPackageManagementSelectedProject> GetProjects(IPackageFromRepository package)
{
if (HasSingleProjectSelected()) {
@ -44,13 +45,13 @@ namespace ICSharpCode.PackageManagement @@ -44,13 +45,13 @@ namespace ICSharpCode.PackageManagement
void GetHasSingleProjectSelected()
{
singleMSBuildProjectSelected = solution.GetActiveMSBuildProject();
singleMSBuildProjectSelected = Solution.GetActiveMSBuildProject();
singleProjectSelected = singleMSBuildProjectSelected != null;
}
IEnumerable<IProject> GetOpenProjects()
{
return solution.GetMSBuildProjects();
return Solution.GetMSBuildProjects();
}
IPackageManagementSelectedProject GetSingleProjectSelected(IPackageFromRepository package)
@ -60,7 +61,7 @@ namespace ICSharpCode.PackageManagement @@ -60,7 +61,7 @@ namespace ICSharpCode.PackageManagement
IPackageManagementSelectedProject CreateSelectedProject(IProject msbuildProject, IPackageFromRepository package)
{
IPackageManagementProject project = solution.GetProject(package.Repository, msbuildProject);
IPackageManagementProject project = Solution.GetProject(package.Repository, msbuildProject);
return CreateSelectedProject(project, package);
}
@ -88,7 +89,7 @@ namespace ICSharpCode.PackageManagement @@ -88,7 +89,7 @@ namespace ICSharpCode.PackageManagement
if (HasSingleProjectSelected()) {
return false;
}
return solution.HasMultipleProjects();
return Solution.HasMultipleProjects();
}
public string SelectionName {
@ -110,7 +111,7 @@ namespace ICSharpCode.PackageManagement @@ -110,7 +111,7 @@ namespace ICSharpCode.PackageManagement
string GetSolutionFileNameWithoutFullPath()
{
return Path.GetFileName(solution.FileName);
return Path.GetFileName(Solution.FileName);
}
/// <summary>
@ -127,12 +128,12 @@ namespace ICSharpCode.PackageManagement @@ -127,12 +128,12 @@ namespace ICSharpCode.PackageManagement
public bool IsPackageInstalledInSolution(IPackage package)
{
return solution.IsPackageInstalled(package);
return Solution.IsPackageInstalled(package);
}
public IQueryable<IPackage> GetPackagesInstalledInSolution()
{
return solution.GetPackages();
return Solution.GetPackages();
}
public IQueryable<IPackage> GetInstalledPackages(IPackageRepository sourceRepository)
@ -147,7 +148,7 @@ namespace ICSharpCode.PackageManagement @@ -147,7 +148,7 @@ namespace ICSharpCode.PackageManagement
public IPackageManagementProject GetSingleProjectSelected(IPackageRepository repository)
{
if (HasSingleProjectSelected()) {
return solution.GetProject(repository, singleMSBuildProjectSelected);
return Solution.GetProject(repository, singleMSBuildProjectSelected);
}
return null;
}

12
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementServices.cs

@ -3,6 +3,7 @@ @@ -3,6 +3,7 @@
using System;
using ICSharpCode.PackageManagement.Scripting;
using NuGet;
namespace ICSharpCode.PackageManagement
{
@ -41,6 +42,17 @@ namespace ICSharpCode.PackageManagement @@ -41,6 +42,17 @@ namespace ICSharpCode.PackageManagement
resetPowerShellWorkingDirectory = new ResetPowerShellWorkingDirectoryOnSolutionClosed(projectService, ConsoleHost);
var consolePackageActionRunner = new ConsolePackageActionRunner(ConsoleHost, packageActionsToRun);
packageActionRunner = new PackageActionRunner(consolePackageActionRunner, packageManagementEvents);
InitializeCredentialProvider();
}
static void InitializeCredentialProvider()
{
ISettings settings = Settings.LoadDefaultSettings(null);
var packageSourceProvider = new PackageSourceProvider(settings);
var credentialProvider = new SettingsCredentialProvider(new SharpDevelopCredentialProvider(), packageSourceProvider);
HttpClient.DefaultCredentialProvider = credentialProvider;
}
public static PackageManagementOptions Options {

19
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementWorkbench.cs

@ -12,17 +12,27 @@ namespace ICSharpCode.PackageManagement @@ -12,17 +12,27 @@ namespace ICSharpCode.PackageManagement
{
public void CreateConsolePad()
{
PadDescriptor pad = WorkbenchSingleton.Workbench.GetPad(typeof(PackageManagementConsolePad));
pad.BringPadToFront();
PadDescriptor pad = GetConsolePad();
EnsurePackageManagementConsoleViewModelIsCreated(pad);
}
PadDescriptor GetConsolePad()
{
return WorkbenchSingleton.Workbench.GetPad(typeof(PackageManagementConsolePad));
}
void EnsurePackageManagementConsoleViewModelIsCreated(PadDescriptor pad)
{
// Force creation of view model.
object control = pad.PadContent.Control;
}
public void ShowConsolePad()
{
PadDescriptor pad = GetConsolePad();
pad.BringPadToFront();
}
public bool InvokeRequired {
get { return WorkbenchSingleton.InvokeRequired; }
}
@ -36,5 +46,10 @@ namespace ICSharpCode.PackageManagement @@ -36,5 +46,10 @@ namespace ICSharpCode.PackageManagement
{
WorkbenchSingleton.SafeThreadAsyncCall<A, B>(method, arg1, arg2);
}
public R SafeThreadFunction<R>(Func<R> method)
{
return WorkbenchSingleton.SafeThreadFunction<R>(method);
}
}
}

11
src/AddIns/Misc/PackageManagement/Project/Src/PackageOperationsResolverFactory.cs

@ -22,5 +22,16 @@ namespace ICSharpCode.PackageManagement @@ -22,5 +22,16 @@ namespace ICSharpCode.PackageManagement
installAction.IgnoreDependencies,
installAction.AllowPrereleaseVersions);
}
public IPackageOperationResolver CreateUpdatePackageOperationResolver(IPackageRepository localRepository, IPackageRepository sourceRepository, ILogger logger, IUpdatePackageSettings settings)
{
return new InstallWalker(
localRepository,
sourceRepository,
null,
logger,
!settings.UpdateDependencies,
settings.AllowPrereleaseVersions);
}
}
}

19
src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs

@ -22,14 +22,17 @@ namespace ICSharpCode.PackageManagement @@ -22,14 +22,17 @@ namespace ICSharpCode.PackageManagement
IEnumerable<PackageOperation> packageOperations = new PackageOperation[0];
PackageViewModelOperationLogger logger;
IPackageActionRunner actionRunner;
IPackageViewModelParent parent;
public PackageViewModel(
IPackageViewModelParent parent,
IPackageFromRepository package,
PackageManagementSelectedProjects selectedProjects,
IPackageManagementEvents packageManagementEvents,
IPackageActionRunner actionRunner,
ILogger logger)
{
this.parent = parent;
this.package = package;
this.selectedProjects = selectedProjects;
this.packageManagementEvents = packageManagementEvents;
@ -39,6 +42,11 @@ namespace ICSharpCode.PackageManagement @@ -39,6 +42,11 @@ namespace ICSharpCode.PackageManagement
CreateCommands();
}
public IPackageViewModelParent GetParent()
{
return parent;
}
protected virtual PackageViewModelOperationLogger CreateLogger(ILogger logger)
{
return new PackageViewModelOperationLogger(logger, package);
@ -170,7 +178,8 @@ namespace ICSharpCode.PackageManagement @@ -170,7 +178,8 @@ namespace ICSharpCode.PackageManagement
{
IPackageManagementProject project = GetSingleProjectSelected();
project.Logger = logger;
var installAction = project.CreateInstallPackageAction();
InstallPackageAction installAction = project.CreateInstallPackageAction();
installAction.AllowPrereleaseVersions = parent.IncludePrerelease;
packageOperations = project.GetInstallPackageOperations(package, installAction);
}
@ -243,6 +252,7 @@ namespace ICSharpCode.PackageManagement @@ -243,6 +252,7 @@ namespace ICSharpCode.PackageManagement
{
IPackageManagementProject project = GetSingleProjectSelected();
ProcessPackageOperationsAction action = CreateInstallPackageAction(project);
action.AllowPrereleaseVersions = parent.IncludePrerelease;
action.Package = package;
action.Operations = packageOperations;
actionRunner.Run(action);
@ -355,6 +365,7 @@ namespace ICSharpCode.PackageManagement @@ -355,6 +365,7 @@ namespace ICSharpCode.PackageManagement
foreach (IPackageManagementSelectedProject selectedProject in selectedProjects) {
if (selectedProject.IsSelected) {
ProcessPackageAction action = CreateInstallPackageAction(selectedProject);
action.AllowPrereleaseVersions = parent.IncludePrerelease;
actions.Add(action);
}
}
@ -402,7 +413,7 @@ namespace ICSharpCode.PackageManagement @@ -402,7 +413,7 @@ namespace ICSharpCode.PackageManagement
void RunActionsIfAnyExist(IList<ProcessPackageAction> actions)
{
if (actions.Any()) {
actionRunner.Run(actions);
actionRunner.Run(actions);
}
}
@ -410,7 +421,9 @@ namespace ICSharpCode.PackageManagement @@ -410,7 +421,9 @@ namespace ICSharpCode.PackageManagement
{
IPackageManagementProject project = selectedProject.Project;
project.Logger = logger;
IEnumerable<PackageOperation> operations = project.GetInstallPackageOperations(package, project.CreateInstallPackageAction());
InstallPackageAction installAction = project.CreateInstallPackageAction();
installAction.AllowPrereleaseVersions = parent.IncludePrerelease;
IEnumerable<PackageOperation> operations = project.GetInstallPackageOperations(package, installAction);
return GetPackagesRequiringLicenseAcceptance(operations);
}

3
src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModelFactory.cs

@ -29,9 +29,10 @@ namespace ICSharpCode.PackageManagement @@ -29,9 +29,10 @@ namespace ICSharpCode.PackageManagement
this.Logger = new PackageManagementLogger(packageManagementEvents);
}
public virtual PackageViewModel CreatePackageViewModel(IPackageFromRepository package)
public virtual PackageViewModel CreatePackageViewModel(IPackageViewModelParent parent, IPackageFromRepository package)
{
return new PackageViewModel(
parent,
package,
SelectedProjects,
PackageManagementEvents,

9
src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModelOperationLogger.cs

@ -60,7 +60,7 @@ namespace ICSharpCode.PackageManagement @@ -60,7 +60,7 @@ namespace ICSharpCode.PackageManagement
public void LogAddingPackage()
{
string message = GetFormattedStartPackageOperationMessage(AddingPackageMessageFormat);
LogInformation(message);
LogInformation(message);
}
string GetFormattedStartPackageOperationMessage(string format)
@ -88,7 +88,12 @@ namespace ICSharpCode.PackageManagement @@ -88,7 +88,12 @@ namespace ICSharpCode.PackageManagement
public void LogManagingPackage()
{
string message = GetFormattedStartPackageOperationMessage(ManagingPackageMessageFormat);
LogInformation(message);
LogInformation(message);
}
public FileConflictResolution ResolveFileConflict(string message)
{
return logger.ResolveFileConflict(message);
}
}
}

18
src/AddIns/Misc/PackageManagement/Project/Src/PackagesView.xaml

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
<UserControl
<UserControl
x:Class="ICSharpCode.PackageManagement.PackagesView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:core="http://icsharpcode.net/sharpdevelop/core"
@ -318,6 +318,8 @@ @@ -318,6 +318,8 @@
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<ComboBox
Grid.Row="0"
@ -352,6 +354,20 @@ @@ -352,6 +354,20 @@
Width="16"/>
</Hyperlink>
</TextBlock>
<CheckBox
Grid.Row="2"
Grid.ColumnSpan="2"
Margin="2"
Content="Include Prerelease"
Visibility="{Binding Path=ShowPrerelease, Converter={StaticResource BoolToVisibility}}"
IsChecked="{Binding Path=IncludePrerelease}"/>
<Button
Grid.Row="3"
Grid.Column="1"
Margin="2"
Visibility="{Binding Path=IsUpdateAllPackagesEnabled, Converter={StaticResource BoolToVisibility}}"
Content="Update All"
Command="{Binding Path=UpdateAllPackagesCommand}"/>
</Grid>
<ContentControl
Grid.Row="1"

65
src/AddIns/Misc/PackageManagement/Project/Src/PackagesViewModel.cs

@ -13,7 +13,7 @@ using NuGet; @@ -13,7 +13,7 @@ using NuGet;
namespace ICSharpCode.PackageManagement
{
public abstract class PackagesViewModel : ViewModelBase<PackagesViewModel>, IDisposable
public abstract class PackagesViewModel : ViewModelBase<PackagesViewModel>, IDisposable, IPackageViewModelParent
{
Pages pages = new Pages();
@ -22,7 +22,8 @@ namespace ICSharpCode.PackageManagement @@ -22,7 +22,8 @@ namespace ICSharpCode.PackageManagement
ITaskFactory taskFactory;
IEnumerable<IPackage> allPackages;
ITask<PackagesForSelectedPageResult> task;
bool includePrerelease;
public PackagesViewModel(
IRegisteredPackageRepositories registeredPackageRepositories,
IPackageViewModelFactory packageViewModelFactory,
@ -44,12 +45,14 @@ namespace ICSharpCode.PackageManagement @@ -44,12 +45,14 @@ namespace ICSharpCode.PackageManagement
ShowPreviousPageCommand = new DelegateCommand(param => ShowPreviousPage());
ShowPageCommand = new DelegateCommand(param => ExecuteShowPageCommand(param));
SearchCommand = new DelegateCommand(param => Search());
UpdateAllPackagesCommand = new DelegateCommand(param => UpdateAllPackages());
}
public ICommand ShowNextPageCommand { get; private set; }
public ICommand ShowPreviousPageCommand { get; private set; }
public ICommand ShowPageCommand { get; private set; }
public ICommand SearchCommand { get; private set; }
public ICommand UpdateAllPackagesCommand { get; private set; }
public void Dispose()
{
@ -265,7 +268,7 @@ namespace ICSharpCode.PackageManagement @@ -265,7 +268,7 @@ namespace ICSharpCode.PackageManagement
{
var repository = registeredPackageRepositories.ActiveRepository;
var packageFromRepository = new PackageFromRepository(package, repository);
return packageViewModelFactory.CreatePackageViewModel(packageFromRepository);
return packageViewModelFactory.CreatePackageViewModel(this, packageFromRepository);
}
public int SelectedPageNumber {
@ -281,7 +284,7 @@ namespace ICSharpCode.PackageManagement @@ -281,7 +284,7 @@ namespace ICSharpCode.PackageManagement
public int PageSize {
get { return pages.PageSize; }
set { pages.PageSize = value; }
set { pages.PageSize = value; }
}
public bool IsPaged {
@ -361,5 +364,59 @@ namespace ICSharpCode.PackageManagement @@ -361,5 +364,59 @@ namespace ICSharpCode.PackageManagement
}
}
}
public bool ShowUpdateAllPackages { get; set; }
public bool IsUpdateAllPackagesEnabled {
get {
return ShowUpdateAllPackages && (TotalItems > 1);
}
}
void UpdateAllPackages()
{
try {
packageViewModelFactory.PackageManagementEvents.OnPackageOperationsStarting();
TryUpdatingAllPackages();
} catch (Exception ex) {
ReportError(ex);
LogError(ex);
}
}
void LogError(Exception ex)
{
packageViewModelFactory
.Logger
.Log(MessageLevel.Error, ex.ToString());
}
void ReportError(Exception ex)
{
packageViewModelFactory
.PackageManagementEvents
.OnPackageOperationError(ex);
}
protected virtual void TryUpdatingAllPackages()
{
}
protected IPackageActionRunner ActionRunner {
get { return packageViewModelFactory.PackageActionRunner; }
}
public bool IncludePrerelease {
get { return includePrerelease; }
set {
if (includePrerelease != value) {
includePrerelease = value;
ReadPackages();
OnPropertyChanged(null);
}
}
}
public bool ShowPrerelease { get; set; }
}
}

19
src/AddIns/Misc/PackageManagement/Project/Src/ParentPackagesOperationEventArgs.cs

@ -0,0 +1,19 @@ @@ -0,0 +1,19 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using NuGet;
namespace ICSharpCode.PackageManagement
{
public class ParentPackagesOperationEventArgs : EventArgs
{
public ParentPackagesOperationEventArgs(IEnumerable<IPackage> packages)
{
this.Packages = packages;
}
public IEnumerable<IPackage> Packages { get; private set; }
}
}

26
src/AddIns/Misc/PackageManagement/Project/Src/ProcessPackageAction.cs

@ -8,7 +8,7 @@ using NuGet; @@ -8,7 +8,7 @@ using NuGet;
namespace ICSharpCode.PackageManagement
{
public abstract class ProcessPackageAction
public abstract class ProcessPackageAction : IPackageAction
{
IPackageManagementEvents packageManagementEvents;
@ -45,11 +45,23 @@ namespace ICSharpCode.PackageManagement @@ -45,11 +45,23 @@ namespace ICSharpCode.PackageManagement
public void Execute()
{
BeforeExecute();
if (PackageScriptRunner != null) {
ExecuteWithScriptRunner();
} else {
ExecuteCore();
RunWithExceptionReporting(() => {
BeforeExecute();
if (PackageScriptRunner != null) {
ExecuteWithScriptRunner();
} else {
ExecuteCore();
}
});
}
void RunWithExceptionReporting(Action action)
{
try {
action();
} catch (Exception ex) {
packageManagementEvents.OnPackageOperationError(ex);
throw;
}
}
@ -107,7 +119,7 @@ namespace ICSharpCode.PackageManagement @@ -107,7 +119,7 @@ namespace ICSharpCode.PackageManagement
void FindPackage()
{
Package =Project
Package = Project
.SourceRepository
.FindPackage(PackageId, PackageVersion, AllowPrereleaseVersions, allowUnlisted: true);
}

2
src/AddIns/Misc/PackageManagement/Project/Src/ProcessPackageOperationsAction.cs

@ -30,7 +30,7 @@ namespace ICSharpCode.PackageManagement @@ -30,7 +30,7 @@ namespace ICSharpCode.PackageManagement
base.BeforeExecute();
GetPackageOperationsIfMissing();
}
void GetPackageOperationsIfMissing()
{
if (Operations == null) {

3
src/AddIns/Misc/PackageManagement/Project/Src/ProjectBrowserRefresher.cs

@ -19,9 +19,10 @@ namespace ICSharpCode.PackageManagement @@ -19,9 +19,10 @@ namespace ICSharpCode.PackageManagement
packageManagementEvents.ParentPackageInstalled += ProjectChanged;
packageManagementEvents.ParentPackageUninstalled += ProjectChanged;
packageManagementEvents.ParentPackagesUpdated += ProjectChanged;
}
void ProjectChanged(object sender, ParentPackageOperationEventArgs e)
void ProjectChanged(object sender, EventArgs e)
{
projectService.RefreshProjectBrowser();
}

19
src/AddIns/Misc/PackageManagement/Project/Src/ProjectRootElementExtensions.cs

@ -0,0 +1,19 @@ @@ -0,0 +1,19 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Linq;
using Microsoft.Build.Construction;
namespace ICSharpCode.PackageManagement
{
public static class ProjectRootElementExtensions
{
public static ProjectImportElement FindImport(this ProjectRootElement rootElement, string importedProjectFile)
{
return rootElement
.Imports
.FirstOrDefault(import => String.Equals(import.Project, importedProjectFile, StringComparison.OrdinalIgnoreCase));
}
}
}

52
src/AddIns/Misc/PackageManagement/Project/Src/ReducedPackageOperations.cs

@ -0,0 +1,52 @@ @@ -0,0 +1,52 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using System.Linq;
using NuGet;
namespace ICSharpCode.PackageManagement
{
public class ReducedPackageOperations
{
IPackageOperationResolver resolver;
IList<PackageOperation> operations;
IEnumerable<IPackage> packages;
public ReducedPackageOperations(IPackageOperationResolver resolver, IEnumerable<IPackage> packages)
{
this.resolver = resolver;
this.packages = packages;
this.operations = new List<PackageOperation>();
}
public IEnumerable<PackageOperation> Operations {
get { return operations; }
}
public void Reduce()
{
foreach (IPackage package in packages) {
if (!InstallOperationExists(package)) {
operations.AddRange(resolver.ResolveOperations(package));
}
}
operations = operations.Reduce();
}
bool InstallOperationExists(IPackage package)
{
var installOperation = new PackageOperation(package, PackageAction.Install);
return operations.Any(operation => IsMatch(installOperation, operation));
}
bool IsMatch(PackageOperation x, PackageOperation y)
{
return (x.Package.Id == y.Package.Id) &&
(x.Package.Version == y.Package.Version) &&
(x.Action == y.Action);
}
}
}

20
src/AddIns/Misc/PackageManagement/Project/Src/ResolveFileConflictEventArgs.cs

@ -0,0 +1,20 @@ @@ -0,0 +1,20 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using NuGet;
namespace ICSharpCode.PackageManagement
{
public class ResolveFileConflictEventArgs : EventArgs
{
public ResolveFileConflictEventArgs(string message)
{
this.Message = message;
this.Resolution = FileConflictResolution.Ignore;
}
public string Message { get; private set; }
public FileConflictResolution Resolution { get; set; }
}
}

44
src/AddIns/Misc/PackageManagement/Project/Src/Scripting/ConsoleHostFileConflictResolver.cs

@ -0,0 +1,44 @@ @@ -0,0 +1,44 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using NuGet;
namespace ICSharpCode.PackageManagement.Scripting
{
public class ConsoleHostFileConflictResolver : IConsoleHostFileConflictResolver
{
IPackageManagementEvents packageEvents;
FileConflictResolution conflictResolution;
public ConsoleHostFileConflictResolver(
IPackageManagementEvents packageEvents,
FileConflictAction fileConflictAction)
{
this.packageEvents = packageEvents;
conflictResolution = GetFileConflictResolution(fileConflictAction);
packageEvents.ResolveFileConflict += ResolveFileConflict;
}
void ResolveFileConflict(object sender, ResolveFileConflictEventArgs e)
{
e.Resolution = conflictResolution;
}
FileConflictResolution GetFileConflictResolution(FileConflictAction fileConflictAction)
{
switch (fileConflictAction) {
case FileConflictAction.Overwrite:
return FileConflictResolution.Overwrite;
default:
return FileConflictResolution.Ignore;
}
}
public void Dispose()
{
packageEvents.ResolveFileConflict -= ResolveFileConflict;
}
}
}

14
src/AddIns/Misc/PackageManagement/Project/Src/Scripting/FileConflictAction.cs

@ -0,0 +1,14 @@ @@ -0,0 +1,14 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
namespace ICSharpCode.PackageManagement.Scripting
{
public enum FileConflictAction
{
None,
Overwrite,
Ignore
}
}

96
src/AddIns/Misc/PackageManagement/Project/Src/Scripting/GlobalMSBuildProjectCollection.cs

@ -0,0 +1,96 @@ @@ -0,0 +1,96 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using System.Linq;
using ICSharpCode.SharpDevelop.Project;
using Microsoft.Build.Evaluation;
using NuGet;
namespace ICSharpCode.PackageManagement.Scripting
{
public class GlobalMSBuildProjectCollection : IGlobalMSBuildProjectCollection
{
class GlobalAndInternalProject
{
public Project GlobalMSBuildProject;
public MSBuildBasedProject SharpDevelopMSBuildProject;
public int GlobalMSBuildProjectImportsCount;
public bool HasGlobalMSBuildProjectImportsChanged()
{
return GlobalMSBuildProjectImportsCount != GlobalMSBuildProject.Xml.Imports.Count;
}
}
List<GlobalAndInternalProject> projects = new List<GlobalAndInternalProject>();
PackageManagementLogger logger = new PackageManagementLogger(
new ThreadSafePackageManagementEvents(PackageManagementServices.PackageManagementEvents));
public void AddProject(IPackageManagementProject packageManagementProject)
{
AddProject(packageManagementProject.ConvertToDTEProject().MSBuildProject);
}
void AddProject(MSBuildBasedProject sharpDevelopProject)
{
Project globalProject = GetGlobalProjectCollection().LoadProject(sharpDevelopProject.FileName);
projects.Add(new GlobalAndInternalProject {
GlobalMSBuildProject = globalProject,
SharpDevelopMSBuildProject = sharpDevelopProject,
GlobalMSBuildProjectImportsCount = globalProject.Xml.Imports.Count
});
}
ProjectCollection GetGlobalProjectCollection()
{
return ProjectCollection.GlobalProjectCollection;
}
public void Dispose()
{
foreach (GlobalAndInternalProject msbuildProjects in projects) {
UpdateImports(msbuildProjects);
GetGlobalProjectCollection().UnloadProject(msbuildProjects.GlobalMSBuildProject);
}
}
void UpdateImports(GlobalAndInternalProject msbuildProjects)
{
if (!msbuildProjects.HasGlobalMSBuildProjectImportsChanged()) {
return;
}
LogProjectImportsChanged(msbuildProjects.SharpDevelopMSBuildProject);
var importsMerger = new MSBuildProjectImportsMerger(
msbuildProjects.GlobalMSBuildProject,
msbuildProjects.SharpDevelopMSBuildProject);
importsMerger.Merge();
LogProjectImportMergeResult(msbuildProjects.SharpDevelopMSBuildProject, importsMerger.Result);
}
void LogProjectImportsChanged(MSBuildBasedProject project)
{
logger.Log(
MessageLevel.Info,
"Project imports have been modified outside SharpDevelop for project '{0}'.",
project.Name);
}
void LogProjectImportMergeResult(MSBuildBasedProject project, MSBuildProjectImportsMergeResult result)
{
logger.Log(
MessageLevel.Info,
"Project import merge result for project '{0}':\r\n{1}",
project.Name,
result);
}
}
}

11
src/AddIns/Misc/PackageManagement/Project/Src/Scripting/IConsoleHostFileConflictResolver.cs

@ -0,0 +1,11 @@ @@ -0,0 +1,11 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
namespace ICSharpCode.PackageManagement.Scripting
{
public interface IConsoleHostFileConflictResolver : IDisposable
{
}
}

12
src/AddIns/Misc/PackageManagement/Project/Src/Scripting/IGlobalMSBuildProjectCollection.cs

@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
namespace ICSharpCode.PackageManagement.Scripting
{
public interface IGlobalMSBuildProjectCollection : IDisposable
{
void AddProject(IPackageManagementProject project);
}
}

2
src/AddIns/Misc/PackageManagement/Project/Src/Scripting/IPackageManagementConsoleHost.cs

@ -26,6 +26,8 @@ namespace ICSharpCode.PackageManagement.Scripting @@ -26,6 +26,8 @@ namespace ICSharpCode.PackageManagement.Scripting
void SetDefaultRunspace();
IConsoleHostFileConflictResolver CreateFileConflictResolver(FileConflictAction fileConflictAction);
IPackageManagementProject GetProject(string packageSource, string projectName);
IPackageManagementProject GetProject(IPackageRepository sourceRepository, string projectName);
PackageSource GetActivePackageSource(string source);

56
src/AddIns/Misc/PackageManagement/Project/Src/Scripting/MSBuildProjectImportsMergeResult.cs

@ -0,0 +1,56 @@ @@ -0,0 +1,56 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using System.Linq;
using ICSharpCode.SharpDevelop;
using Microsoft.Build.Construction;
namespace ICSharpCode.PackageManagement.Scripting
{
public class MSBuildProjectImportsMergeResult
{
List<string> projectImportsAdded = new List<string>();
List<string> projectImportsRemoved = new List<string>();
public MSBuildProjectImportsMergeResult()
{
}
public IEnumerable<string> ProjectImportsAdded {
get { return projectImportsAdded; }
}
public IEnumerable<string> ProjectImportsRemoved {
get { return projectImportsRemoved; }
}
public override string ToString()
{
return String.Format(
"Imports added: {0}\r\nImports removed: {1}",
ImportsToString(projectImportsAdded),
ImportsToString(projectImportsRemoved));
}
static string ImportsToString(IEnumerable<string> imports)
{
if (!imports.Any()) {
return String.Empty;
}
return String.Join(",\r\n", imports.Select(import => String.Format("'{0}'", import)));
}
public void AddProjectImportsRemoved(IEnumerable<ProjectImportElement> imports)
{
imports.ForEach(import => projectImportsRemoved.Add(import.Project));
}
public void AddProjectImportsAdded(IEnumerable<ProjectImportElement> imports)
{
imports.ForEach(import => projectImportsAdded.Add(import.Project));
}
}
}

87
src/AddIns/Misc/PackageManagement/Project/Src/Scripting/MSBuildProjectImportsMerger.cs

@ -0,0 +1,87 @@ @@ -0,0 +1,87 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using System.Linq;
using ICSharpCode.SharpDevelop.Project;
using Microsoft.Build.Construction;
using Microsoft.Build.Evaluation;
using NuGet;
namespace ICSharpCode.PackageManagement.Scripting
{
public class MSBuildProjectImportsMerger
{
IPackageManagementProjectService projectService;
Project msbuildProject;
MSBuildBasedProject sharpDevelopProject;
MSBuildProjectImportsMergeResult result = new MSBuildProjectImportsMergeResult();
public MSBuildProjectImportsMerger(Project msbuildProject, MSBuildBasedProject sharpDevelopProject)
: this(msbuildProject, sharpDevelopProject, new PackageManagementProjectService())
{
}
public MSBuildProjectImportsMerger(
Project msbuildProject,
MSBuildBasedProject sharpDevelopProject,
IPackageManagementProjectService projectService)
{
this.msbuildProject = msbuildProject;
this.sharpDevelopProject = sharpDevelopProject;
this.projectService = projectService;
}
public MSBuildProjectImportsMergeResult Result {
get { return result; }
}
public void Merge()
{
int msbuildProjectImportCount = msbuildProject.Xml.Imports.Count;
int sharpDevelopProjectImportCount = sharpDevelopProject.MSBuildProjectFile.Imports.Count;
if (msbuildProjectImportCount > sharpDevelopProjectImportCount) {
AddNewImports();
} else if (msbuildProjectImportCount < sharpDevelopProjectImportCount) {
RemoveMissingImports();
}
}
void RemoveMissingImports()
{
var importsToRemove = new List<ProjectImportElement>();
foreach (ProjectImportElement import in sharpDevelopProject.MSBuildProjectFile.Imports) {
if (msbuildProject.Xml.FindImport(import.Project) == null) {
importsToRemove.Add(import);
}
}
foreach (ProjectImportElement importToRemove in importsToRemove) {
sharpDevelopProject.MSBuildProjectFile.RemoveChild(importToRemove);
}
result.AddProjectImportsRemoved(importsToRemove);
projectService.Save(sharpDevelopProject);
}
void AddNewImports()
{
var importsToAdd = new List<ProjectImportElement>();
foreach (ProjectImportElement import in msbuildProject.Xml.Imports) {
if (!sharpDevelopProject.ImportExists(import.Project)) {
importsToAdd.Add(import);
}
}
foreach (ProjectImportElement importToAdd in importsToAdd) {
sharpDevelopProject.AddImportIfMissing(importToAdd.Project, ProjectImportLocation.Bottom);
}
result.AddProjectImportsAdded(importsToAdd);
projectService.Save(sharpDevelopProject);
}
}
}

18
src/AddIns/Misc/PackageManagement/Project/Src/Scripting/NullGlobalMSBuildProjectCollection.cs

@ -0,0 +1,18 @@ @@ -0,0 +1,18 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
namespace ICSharpCode.PackageManagement.Scripting
{
public class NullGlobalMSBuildProjectCollection : IGlobalMSBuildProjectCollection
{
public void AddProject(IPackageManagementProject project)
{
}
public void Dispose()
{
}
}
}

12
src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageManagementConsoleHost.cs

@ -19,12 +19,14 @@ namespace ICSharpCode.PackageManagement.Scripting @@ -19,12 +19,14 @@ namespace ICSharpCode.PackageManagement.Scripting
IPowerShellHostFactory powerShellHostFactory;
IPowerShellHost powerShellHost;
IPackageManagementAddInPath addinPath;
IPackageManagementEvents packageEvents;
int autoIndentSize = 0;
string prompt = "PM> ";
public PackageManagementConsoleHost(
IPackageManagementSolution solution,
IRegisteredPackageRepositories registeredRepositories,
IPackageManagementEvents packageEvents,
IPowerShellHostFactory powerShellHostFactory,
IPackageManagementAddInPath addinPath)
{
@ -32,14 +34,17 @@ namespace ICSharpCode.PackageManagement.Scripting @@ -32,14 +34,17 @@ namespace ICSharpCode.PackageManagement.Scripting
this.registeredRepositories = registeredRepositories;
this.powerShellHostFactory = powerShellHostFactory;
this.addinPath = addinPath;
this.packageEvents = packageEvents;
}
public PackageManagementConsoleHost(
IPackageManagementSolution solution,
IRegisteredPackageRepositories registeredRepositories)
IRegisteredPackageRepositories registeredRepositories,
IPackageManagementEvents packageEvents)
: this(
solution,
registeredRepositories,
packageEvents,
new PowerShellHostFactory(),
new PackageManagementAddInPath())
{
@ -260,5 +265,10 @@ namespace ICSharpCode.PackageManagement.Scripting @@ -260,5 +265,10 @@ namespace ICSharpCode.PackageManagement.Scripting
{
powerShellHost.SetDefaultRunspace();
}
public IConsoleHostFileConflictResolver CreateFileConflictResolver(FileConflictAction fileConflictAction)
{
return new ConsoleHostFileConflictResolver(packageEvents, fileConflictAction);
}
}
}

12
src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PackageManagementConsoleHostProvider.cs

@ -12,22 +12,28 @@ namespace ICSharpCode.PackageManagement.Scripting @@ -12,22 +12,28 @@ namespace ICSharpCode.PackageManagement.Scripting
IRegisteredPackageRepositories registeredRepositories;
IPowerShellDetection powerShellDetection;
IPackageManagementConsoleHost consoleHost;
IPackageManagementEvents packageEvents;
public PackageManagementConsoleHostProvider(
IPackageManagementSolution solution,
IRegisteredPackageRepositories registeredRepositories)
: this(solution, registeredRepositories, new PowerShellDetection())
: this(solution,
registeredRepositories,
new PowerShellDetection(),
PackageManagementServices.PackageManagementEvents)
{
}
public PackageManagementConsoleHostProvider(
IPackageManagementSolution solution,
IRegisteredPackageRepositories registeredRepositories,
IPowerShellDetection powerShellDetection)
IPowerShellDetection powerShellDetection,
IPackageManagementEvents packageEvents)
{
this.solution = solution;
this.registeredRepositories = registeredRepositories;
this.powerShellDetection = powerShellDetection;
this.packageEvents = packageEvents;
}
public IPackageManagementConsoleHost ConsoleHost {
@ -42,7 +48,7 @@ namespace ICSharpCode.PackageManagement.Scripting @@ -42,7 +48,7 @@ namespace ICSharpCode.PackageManagement.Scripting
void CreateConsoleHost()
{
if (powerShellDetection.IsPowerShell2Installed()) {
consoleHost = new PackageManagementConsoleHost(solution, registeredRepositories);
consoleHost = new PackageManagementConsoleHost(solution, registeredRepositories, packageEvents);
} else {
consoleHost = new PowerShellMissingConsoleHost();
}

5
src/AddIns/Misc/PackageManagement/Project/Src/Scripting/PowerShellMissingConsoleHost.cs

@ -80,5 +80,10 @@ namespace ICSharpCode.PackageManagement.Scripting @@ -80,5 +80,10 @@ namespace ICSharpCode.PackageManagement.Scripting
public void SetDefaultRunspace()
{
}
public IConsoleHostFileConflictResolver CreateFileConflictResolver(FileConflictAction fileConflictAction)
{
return null;
}
}
}

168
src/AddIns/Misc/PackageManagement/Project/Src/Scripting/RunAllProjectPackageScriptsAction.cs

@ -0,0 +1,168 @@ @@ -0,0 +1,168 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using System.Linq;
using NuGet;
namespace ICSharpCode.PackageManagement.Scripting
{
public class RunAllProjectPackageScriptsAction : IDisposable
{
IPackageScriptRunner scriptRunner;
List<IPackageManagementProject> projects;
IPackageScriptFactory scriptFactory;
IGlobalMSBuildProjectCollection projectCollection;
List<EventHandler<PackageOperationEventArgs>> packageInstalledHandlers =
new List<EventHandler<PackageOperationEventArgs>>();
List<EventHandler<PackageOperationEventArgs>> packageReferenceAddedHandlers =
new List<EventHandler<PackageOperationEventArgs>>();
List<EventHandler<PackageOperationEventArgs>> packageReferenceRemovedHandlers =
new List<EventHandler<PackageOperationEventArgs>>();
public RunAllProjectPackageScriptsAction(
IPackageScriptRunner scriptRunner,
IEnumerable<IPackageManagementProject> projects)
: this(scriptRunner, projects, new PackageScriptFactory(), new GlobalMSBuildProjectCollection())
{
}
public RunAllProjectPackageScriptsAction(
IPackageScriptRunner scriptRunner,
IEnumerable<IPackageManagementProject> projects,
IPackageScriptFactory scriptFactory,
IGlobalMSBuildProjectCollection projectCollection)
{
this.scriptRunner = scriptRunner;
this.projects = projects.ToList();
this.scriptFactory = scriptFactory;
this.projectCollection = projectCollection;
AddProjectsToGlobalCollection();
RegisterEvents();
}
public void Dispose()
{
IsDisposed = true;
UnregisterEvents();
projectCollection.Dispose();
}
public bool IsDisposed { get; private set; }
void AddProjectsToGlobalCollection()
{
foreach (IPackageManagementProject project in projects) {
projectCollection.AddProject(project);
}
}
void RegisterEvents()
{
foreach (IPackageManagementProject project in projects) {
RegisterPackageInstalledEvent(project);
RegisterPackageReferenceAddedEvent(project);
RegisterPackageReferenceRemovedEvent(project);
}
}
void RegisterPackageInstalledEvent(IPackageManagementProject project)
{
EventHandler<PackageOperationEventArgs> installHandler =
(_, e) => PackageInstalled(project, e);
packageInstalledHandlers.Add(installHandler);
project.PackageInstalled += installHandler;
}
void RegisterPackageReferenceAddedEvent(IPackageManagementProject project)
{
EventHandler<PackageOperationEventArgs> referenceAddedHandler =
(_, e) => PackageReferenceAdded(project, e);
packageReferenceAddedHandlers.Add(referenceAddedHandler);
project.PackageReferenceAdded += referenceAddedHandler;
}
void RegisterPackageReferenceRemovedEvent(IPackageManagementProject project)
{
EventHandler<PackageOperationEventArgs> referenceRemovedHandler =
(_, e) => PackageReferenceRemoved(project, e);
packageReferenceRemovedHandlers.Add(referenceRemovedHandler);
project.PackageReferenceRemoved += referenceRemovedHandler;
}
void UnregisterEvents()
{
foreach (IPackageManagementProject project in projects) {
UnregisterPackageInstalledEvent(project);
UnregisterPackageReferenceAddedEvent(project);
UnregisterPackageReferenceRemovedEvent(project);
}
}
void UnregisterPackageInstalledEvent(IPackageManagementProject project)
{
EventHandler<PackageOperationEventArgs> handler = packageInstalledHandlers.First();
packageInstalledHandlers.Remove(handler);
project.PackageInstalled -= handler;
}
void UnregisterPackageReferenceAddedEvent(IPackageManagementProject project)
{
EventHandler<PackageOperationEventArgs> handler = packageReferenceAddedHandlers.First();
packageReferenceAddedHandlers.Remove(handler);
project.PackageReferenceAdded -= handler;
}
void UnregisterPackageReferenceRemovedEvent(IPackageManagementProject project)
{
EventHandler<PackageOperationEventArgs> handler = packageReferenceRemovedHandlers.First();
packageReferenceRemovedHandlers.Remove(handler);
project.PackageReferenceRemoved -= handler;
}
void PackageInstalled(IPackageManagementProject project, PackageOperationEventArgs e)
{
RunInitScript(project, e);
}
void PackageReferenceAdded(IPackageManagementProject project, PackageOperationEventArgs e)
{
RunInstallScript(project, e);
}
void PackageReferenceRemoved(IPackageManagementProject project, PackageOperationEventArgs e)
{
RunUninstallScript(project, e);
}
void RunInitScript(IPackageManagementProject project, PackageOperationEventArgs e)
{
IPackageScript script = scriptFactory.CreatePackageInitializeScript(e.Package, e.InstallPath);
RunScript(project, script);
}
void RunScript(IPackageManagementProject project, IPackageScript script)
{
script.Project = project;
scriptRunner.Run(script);
}
void RunInstallScript(IPackageManagementProject project, PackageOperationEventArgs e)
{
IPackageScript script = scriptFactory.CreatePackageInstallScript(e.Package, e.InstallPath);
RunScript(project, script);
}
void RunUninstallScript(IPackageManagementProject project, PackageOperationEventArgs e)
{
IPackageScript script = scriptFactory.CreatePackageUninstallScript(e.Package, e.InstallPath);
RunScript(project, script);
}
}
}

9
src/AddIns/Misc/PackageManagement/Project/Src/Scripting/RunPackageScriptsAction.cs

@ -11,23 +11,27 @@ namespace ICSharpCode.PackageManagement.Scripting @@ -11,23 +11,27 @@ namespace ICSharpCode.PackageManagement.Scripting
IPackageManagementProject project;
IPackageScriptFactory scriptFactory;
IPackageScriptRunner scriptRunner;
IGlobalMSBuildProjectCollection projectCollection;
public RunPackageScriptsAction(
IPackageScriptRunner scriptRunner,
IPackageManagementProject project)
: this(project, scriptRunner, new PackageScriptFactory())
: this(project, scriptRunner, new PackageScriptFactory(), new GlobalMSBuildProjectCollection())
{
}
public RunPackageScriptsAction(
IPackageManagementProject project,
IPackageScriptRunner scriptRunner,
IPackageScriptFactory scriptFactory)
IPackageScriptFactory scriptFactory,
IGlobalMSBuildProjectCollection projectCollection)
{
this.project = project;
this.scriptRunner = scriptRunner;
this.scriptFactory = scriptFactory;
this.projectCollection = projectCollection;
projectCollection.AddProject(project);
RegisterEvents();
}
@ -88,6 +92,7 @@ namespace ICSharpCode.PackageManagement.Scripting @@ -88,6 +92,7 @@ namespace ICSharpCode.PackageManagement.Scripting
{
IsDisposed = true;
UnregisterEvents();
projectCollection.Dispose();
}
public bool IsDisposed { get; private set; }

16
src/AddIns/Misc/PackageManagement/Project/Src/SelectProjectsService.cs

@ -8,24 +8,12 @@ using ICSharpCode.SharpDevelop.Gui; @@ -8,24 +8,12 @@ using ICSharpCode.SharpDevelop.Gui;
namespace ICSharpCode.PackageManagement
{
public class SelectProjectsService : ISelectProjectsService
public class SelectProjectsService : ServiceWithWorkbenchOwner, ISelectProjectsService
{
Window owner;
public Window Owner {
get {
if (owner == null) {
owner = WorkbenchSingleton.MainWindow;
}
return owner;
}
set { owner = value; }
}
public bool SelectProjects(IEnumerable<IPackageManagementSelectedProject> projects)
{
SelectProjectsView view = CreateSelectProjectsView(projects);
return view.ShowDialog() ?? false;
return view.ShowDialog() ?? false;
}
SelectProjectsView CreateSelectProjectsView(IEnumerable<IPackageManagementSelectedProject> projects)

24
src/AddIns/Misc/PackageManagement/Project/Src/ServiceWithWorkbenchOwner.cs

@ -0,0 +1,24 @@ @@ -0,0 +1,24 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Windows;
using ICSharpCode.SharpDevelop.Gui;
namespace ICSharpCode.PackageManagement
{
public class ServiceWithWorkbenchOwner
{
Window owner;
public Window Owner {
get {
if (owner == null) {
owner = WorkbenchSingleton.MainWindow;
}
return owner;
}
set { owner = value; }
}
}
}

18
src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopCredentialProvider.cs

@ -0,0 +1,18 @@ @@ -0,0 +1,18 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Net;
using NuGet;
namespace ICSharpCode.PackageManagement
{
public class SharpDevelopCredentialProvider : ICredentialProvider
{
public ICredentials GetCredentials(Uri uri, IWebProxy proxy, CredentialType credentialType, bool retrying)
{
return null;
}
}
}

52
src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopPackageManager.cs

@ -66,9 +66,7 @@ namespace ICSharpCode.PackageManagement @@ -66,9 +66,7 @@ namespace ICSharpCode.PackageManagement
public void InstallPackage(IPackage package, InstallPackageAction installAction)
{
foreach (PackageOperation operation in installAction.Operations) {
Execute(operation);
}
RunPackageOperations(installAction.Operations);
AddPackageReference(package, installAction.IgnoreDependencies, installAction.AllowPrereleaseVersions);
}
@ -119,15 +117,53 @@ namespace ICSharpCode.PackageManagement @@ -119,15 +117,53 @@ namespace ICSharpCode.PackageManagement
public void UpdatePackage(IPackage package, UpdatePackageAction updateAction)
{
foreach (PackageOperation operation in updateAction.Operations) {
Execute(operation);
}
RunPackageOperations(updateAction.Operations);
UpdatePackageReference(package, updateAction);
}
void UpdatePackageReference(IPackage package, UpdatePackageAction updateAction)
public void UpdatePackageReference(IPackage package, IUpdatePackageSettings settings)
{
UpdatePackageReference(package, settings.UpdateDependencies, settings.AllowPrereleaseVersions);
}
void UpdatePackageReference(IPackage package, bool updateDependencies, bool allowPrereleaseVersions)
{
ProjectManager.UpdatePackageReference(package.Id, package.Version, updateAction.UpdateDependencies, updateAction.AllowPrereleaseVersions);
ProjectManager.UpdatePackageReference(package.Id, package.Version, updateDependencies, allowPrereleaseVersions);
}
public void UpdatePackages(UpdatePackagesAction updateAction)
{
RunPackageOperations(updateAction.Operations);
foreach (IPackage package in updateAction.Packages) {
UpdatePackageReference(package, updateAction);
}
}
public IEnumerable<PackageOperation> GetUpdatePackageOperations(
IEnumerable<IPackage> packages,
IUpdatePackageSettings settings)
{
IPackageOperationResolver resolver = CreateUpdatePackageOperationResolver(settings);
var reducedOperations = new ReducedPackageOperations(resolver, packages);
reducedOperations.Reduce();
return reducedOperations.Operations;
}
IPackageOperationResolver CreateUpdatePackageOperationResolver(IUpdatePackageSettings settings)
{
return packageOperationResolverFactory.CreateUpdatePackageOperationResolver(
LocalRepository,
SourceRepository,
Logger,
settings);
}
public void RunPackageOperations(IEnumerable<PackageOperation> operations)
{
foreach (PackageOperation operation in operations) {
Execute(operation);
}
}
}
}

7
src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopProjectManager.cs

@ -21,5 +21,12 @@ namespace ICSharpCode.PackageManagement @@ -21,5 +21,12 @@ namespace ICSharpCode.PackageManagement
{
return LocalRepository.Exists(packageId);
}
public bool HasOlderPackageInstalled(IPackage package)
{
IPackage installedPackage = LocalRepository.FindPackage(package.Id);
return (installedPackage != null) &&
(installedPackage.Version < package.Version);
}
}
}

58
src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopProjectSystem.cs

@ -7,6 +7,7 @@ using System.IO; @@ -7,6 +7,7 @@ using System.IO;
using System.Runtime.Versioning;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Project;
using NuGet;
@ -112,7 +113,8 @@ namespace ICSharpCode.PackageManagement @@ -112,7 +113,8 @@ namespace ICSharpCode.PackageManagement
{
string referenceName = GetReferenceName(name);
foreach (ReferenceProjectItem referenceProjectItem in project.GetItemsOfType(ItemType.Reference)) {
if (IsMatchIgnoringCase(referenceProjectItem.Include, referenceName)) {
var assemblyName = new DomAssemblyName(referenceProjectItem.Include);
if (IsMatchIgnoringCase(assemblyName.ShortName, referenceName)) {
return referenceProjectItem;
}
}
@ -187,10 +189,13 @@ namespace ICSharpCode.PackageManagement @@ -187,10 +189,13 @@ namespace ICSharpCode.PackageManagement
public override void AddFile(string path, Stream stream)
{
PhysicalFileSystemAddFile(path, stream);
if (ShouldAddFileToProject(path)) {
AddFileToProject(path);
}
LogAddedFileToProject(path);
AddFileToProject(path);
}
public override void AddFile(string path, Action<Stream> writeToStream)
{
PhysicalFileSystemAddFile(path, writeToStream);
AddFileToProject(path);
}
protected virtual void PhysicalFileSystemAddFile(string path, Stream stream)
@ -198,6 +203,19 @@ namespace ICSharpCode.PackageManagement @@ -198,6 +203,19 @@ namespace ICSharpCode.PackageManagement
base.AddFile(path, stream);
}
protected virtual void PhysicalFileSystemAddFile(string path, Action<Stream> writeToStream)
{
base.AddFile(path, writeToStream);
}
void AddFileToProject(string path)
{
if (ShouldAddFileToProject(path)) {
AddFileProjectItemToProject(path);
}
LogAddedFileToProject(path);
}
bool ShouldAddFileToProject(string path)
{
return !IsBinDirectory(path) && !FileExistsInProject(path);
@ -209,13 +227,13 @@ namespace ICSharpCode.PackageManagement @@ -209,13 +227,13 @@ namespace ICSharpCode.PackageManagement
return IsMatchIgnoringCase(directoryName, "bin");
}
bool FileExistsInProject(string path)
public bool FileExistsInProject(string path)
{
string fullPath = GetFullPath(path);
return project.IsFileInProject(fullPath);
}
void AddFileToProject(string path)
void AddFileProjectItemToProject(string path)
{
FileProjectItem fileItem = CreateFileProjectItem(path);
projectService.AddProjectItem(project, fileItem);
@ -300,5 +318,31 @@ namespace ICSharpCode.PackageManagement @@ -300,5 +318,31 @@ namespace ICSharpCode.PackageManagement
{
return path;
}
public void AddImport(string targetPath, ProjectImportLocation location)
{
string relativeTargetPath = GetRelativePath(targetPath);
project.AddImportIfMissing(relativeTargetPath, location);
ReevaluateProjectIfNecessary();
projectService.Save(project);
}
string GetRelativePath(string path)
{
return FileUtility.GetRelativePath(project.Directory, path);
}
public void RemoveImport(string targetPath)
{
string relativeTargetPath = GetRelativePath(targetPath);
project.RemoveImport(relativeTargetPath);
ReevaluateProjectIfNecessary();
projectService.Save(project);
}
protected virtual void ReevaluateProjectIfNecessary()
{
project.ReevaluateIfNecessary();
}
}
}

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save