Browse Source

Fix error when installing Fody addins with NuGet.

Implement EnvDTE ProjectItem.Save()
pull/79/head
Matt Ward 12 years ago
parent
commit
aa6ec0d463
  1. 5
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Project.cs
  2. 8
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItem.cs
  3. 1
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementFileService.cs
  4. 12
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementFileService.cs
  5. 1
      src/AddIns/Misc/PackageManagement/SharpDevelop.EnvDTE/Src/ProjectItem.vb
  6. 30
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemTests.cs
  7. 9
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeFileService.cs

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

@ -317,5 +317,10 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -317,5 +317,10 @@ namespace ICSharpCode.PackageManagement.EnvDTE
{
return FileUtility.IsBaseDirectory(MSBuildProject.Directory, filePath);
}
internal void SaveFile(IViewContent view)
{
fileService.SaveFile(view);
}
}
}

8
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItem.cs

@ -229,5 +229,13 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -229,5 +229,13 @@ namespace ICSharpCode.PackageManagement.EnvDTE
{
return Path.GetDirectoryName(GetProjectItemRelativePathToProject());
}
public void Save(string fileName = null)
{
IViewContent view = containingProject.GetOpenFile(FileName);
if (view != null) {
containingProject.SaveFile(view);
}
}
}
}

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

@ -17,6 +17,7 @@ namespace ICSharpCode.PackageManagement @@ -17,6 +17,7 @@ namespace ICSharpCode.PackageManagement
bool FileExists(string fileName);
string[] GetFiles(string path);
string[] GetDirectories(string path);
void SaveFile(IViewContent view);
void ParseFile(string fileName);
ICompilationUnit GetCompilationUnit(string fileName);

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

@ -60,6 +60,18 @@ namespace ICSharpCode.PackageManagement @@ -60,6 +60,18 @@ namespace ICSharpCode.PackageManagement
}
}
public void SaveFile(IViewContent view)
{
if (WorkbenchSingleton.InvokeRequired) {
Action<IViewContent> action = SaveFile;
WorkbenchSingleton.SafeThreadCall<IViewContent>(action, view);
} else {
if (view.IsDirty) {
view.Files.ForEach(ICSharpCode.SharpDevelop.Commands.SaveFile.Save);
}
}
}
public bool FileExists(string fileName)
{
if (WorkbenchSingleton.InvokeRequired) {

1
src/AddIns/Misc/PackageManagement/SharpDevelop.EnvDTE/Src/ProjectItem.vb

@ -18,5 +18,6 @@ Namespace EnvDTE @@ -18,5 +18,6 @@ Namespace EnvDTE
Sub Delete()
Sub Remove()
Function Open(viewKind As String) As Global.EnvDTE.Window
Sub Save(Optional fileName As String = Nothing)
End Interface
End Namespace

30
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemTests.cs

@ -39,11 +39,12 @@ namespace PackageManagement.Tests.EnvDTE @@ -39,11 +39,12 @@ namespace PackageManagement.Tests.EnvDTE
OpenFileInSharpDevelop(fileName, dirty: true);
}
void OpenFileInSharpDevelop(string fileName, bool dirty)
IViewContent OpenFileInSharpDevelop(string fileName, bool dirty)
{
IViewContent view = MockRepository.GenerateStub<IViewContent>();
view.Stub(v => v.IsDirty).Return(dirty);
fakeFileService.AddOpenView(view, fileName);
return view;
}
[Test]
@ -400,5 +401,32 @@ namespace PackageManagement.Tests.EnvDTE @@ -400,5 +401,32 @@ namespace PackageManagement.Tests.EnvDTE
global::EnvDTE.ProjectItem item = collection.Item("program.cs");
Assert.AreEqual("program.cs", item.Name);
}
[Test]
public void Save_FileNameNotPassed_SavesFile()
{
CreateProjectItems();
msbuildProject.FileName = @"d:\projects\MyProject\MyProject.csproj";
msbuildProject.AddFile(@"program.cs");
IViewContent view = OpenFileInSharpDevelop(@"d:\projects\MyProject\program.cs", false);
global::EnvDTE.ProjectItem item = projectItems.Item("program.cs");
item.Save();
Assert.AreEqual(view, fakeFileService.ViewContentPassedToSaveFile);
}
[Test]
public void Save_FileNameNotPassedAndFileNotOpen_FileNotSaved()
{
CreateProjectItems();
msbuildProject.FileName = @"d:\projects\MyProject\MyProject.csproj";
msbuildProject.AddFile(@"program.cs");
global::EnvDTE.ProjectItem item = projectItems.Item("program.cs");
item.Save();
Assert.IsFalse(fakeFileService.IsSaveFileCalled);
}
}
}

9
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakeFileService.cs

@ -140,5 +140,14 @@ namespace PackageManagement.Tests.Helpers @@ -140,5 +140,14 @@ namespace PackageManagement.Tests.Helpers
}
return null;
}
public IViewContent ViewContentPassedToSaveFile;
public bool IsSaveFileCalled;
public void SaveFile(IViewContent view)
{
IsSaveFileCalled = true;
ViewContentPassedToSaveFile = view;
}
}
}

Loading…
Cancel
Save