public void PackageBuilderWorksWithFileNamesContainingSpecialCharacters() { // Arrange var fileNames = new[] { @"lib\regular.file.dll", @"lib\name with spaces.dll", @"lib\C#\test.dll", @"content\images\logo123?#78.png", @"content\images\bread&butter.jpg", }; // Act var builder = new PackageBuilder { Id = "test", Version = new SemanticVersion("1.0"), Description = "test" }; builder.Authors.Add("test"); foreach (var name in fileNames) { builder.Files.Add(CreatePackageFile(name)); } // Assert using (MemoryStream stream = new MemoryStream()) { builder.Save(stream); var zipPackage = new ZipPackage(() => new MemoryStream(stream.ToArray()), enableCaching: false); Assert.Equal(@"content\images\bread&butter.jpg", zipPackage.GetFiles().ElementAt(0).Path); Assert.Equal(@"content\images\logo123?#78.png", zipPackage.GetFiles().ElementAt(1).Path); Assert.Equal(@"lib\C#\test.dll", zipPackage.GetFiles().ElementAt(2).Path); Assert.Equal(@"lib\name with spaces.dll", zipPackage.GetFiles().ElementAt(3).Path); Assert.Equal(@"lib\regular.file.dll", zipPackage.GetFiles().ElementAt(4).Path); } }