diff --git a/src/AddIns/BackendBindings/WixBinding/Project/Src/WixComponentElement.cs b/src/AddIns/BackendBindings/WixBinding/Project/Src/WixComponentElement.cs index f56d02ff2b..c1765a614b 100644 --- a/src/AddIns/BackendBindings/WixBinding/Project/Src/WixComponentElement.cs +++ b/src/AddIns/BackendBindings/WixBinding/Project/Src/WixComponentElement.cs @@ -132,7 +132,7 @@ namespace ICSharpCode.WixBinding if (extension.Length > 1) { idEnd = FirstCharacterToUpperInvariant(extension.Substring(1)); } - return String.Concat(idStart, idEnd); + return WixFileElement.GenerateId(String.Concat(idStart, idEnd)); } /// diff --git a/src/AddIns/BackendBindings/WixBinding/Project/Src/WixDirectoryElementBase.cs b/src/AddIns/BackendBindings/WixBinding/Project/Src/WixDirectoryElementBase.cs index c2188bbf6a..0aee4cd58d 100644 --- a/src/AddIns/BackendBindings/WixBinding/Project/Src/WixDirectoryElementBase.cs +++ b/src/AddIns/BackendBindings/WixBinding/Project/Src/WixDirectoryElementBase.cs @@ -77,7 +77,7 @@ namespace ICSharpCode.WixBinding public WixDirectoryElement AddDirectory(string name) { WixDirectoryElement directoryElement = new WixDirectoryElement((WixDocument)OwnerDocument); - directoryElement.Id = name; + directoryElement.Id = WixFileElement.GenerateId(name); SetDirectoryName(directoryElement, name); return (WixDirectoryElement)AppendChild(directoryElement); } diff --git a/src/AddIns/BackendBindings/WixBinding/Test/DirectoryImport/AddDirectoryWithInvalidIdCharsTestFixture.cs b/src/AddIns/BackendBindings/WixBinding/Test/DirectoryImport/AddDirectoryWithInvalidIdCharsTestFixture.cs new file mode 100644 index 0000000000..9478931b7e --- /dev/null +++ b/src/AddIns/BackendBindings/WixBinding/Test/DirectoryImport/AddDirectoryWithInvalidIdCharsTestFixture.cs @@ -0,0 +1,50 @@ +// +// +// +// +// $Revision$ +// + +using ICSharpCode.WixBinding; +using NUnit.Framework; +using System; + +namespace WixBinding.Tests.DirectoryImport +{ + [TestFixture] + public class AddDirectoryWithInvalidIdCharsTestFixture + { + WixDocument document; + + [SetUp] + public void Init() + { + document = new WixDocument(); + document.FileName = @"C:\Projects\Test\Setup.wxs"; + document.LoadXml(GetWixXml()); + } + + [Test] + public void AddDirectoryWithHyphen() + { + string directoryName = "Test-directory"; + WixDirectoryElement element = document.RootDirectory.AddDirectory(directoryName); + Assert.AreEqual("Test_directory", element.Id); + } + + string GetWixXml() + { + return "\r\n" + + "\t\r\n" + + "\t\t\r\n" + + "\t\t\r\n" + + "\t\t\r\n" + + "\t\r\n" + + ""; + } + } +} diff --git a/src/AddIns/BackendBindings/WixBinding/Test/PackageFiles/GenerateComponentIdTests.cs b/src/AddIns/BackendBindings/WixBinding/Test/PackageFiles/GenerateComponentIdTests.cs index b89ad0a6e5..8cf9dc5d83 100644 --- a/src/AddIns/BackendBindings/WixBinding/Test/PackageFiles/GenerateComponentIdTests.cs +++ b/src/AddIns/BackendBindings/WixBinding/Test/PackageFiles/GenerateComponentIdTests.cs @@ -47,5 +47,12 @@ namespace WixBinding.Tests.PackageFiles { Assert.AreEqual(String.Empty, WixComponentElement.GenerateIdFromFileName(String.Empty)); } + + [Test] + public void Hyphen() + { + string fileName = "a-b.txt"; + Assert.AreEqual("A_bTxt", WixComponentElement.GenerateIdFromFileName(fileName)); + } } } diff --git a/src/AddIns/BackendBindings/WixBinding/Test/WixBinding.Tests.csproj b/src/AddIns/BackendBindings/WixBinding/Test/WixBinding.Tests.csproj index aeafaf305f..111b8c0fc5 100644 --- a/src/AddIns/BackendBindings/WixBinding/Test/WixBinding.Tests.csproj +++ b/src/AddIns/BackendBindings/WixBinding/Test/WixBinding.Tests.csproj @@ -229,6 +229,7 @@ +