public static string CreateManifestName(string fileName, string rootNamespace) { var name = new StringBuilder(); // Differences from the msbuild task: // - we do not include the name of the first class (if any) for binary resources or source code // - culture info is ignored if (rootNamespace != null && rootNamespace.Length > 0) { name.Append(rootNamespace).Append("."); } // Replace spaces in the directory name with underscores. // Note that spaces in the file name itself are preserved. var path = MakeValidIdentifier(Path.GetDirectoryName(fileName)); // This is different from the msbuild task: we always append extensions because otherwise, // the emitted resource doesn't have an extension and it is not the same as in the classic // C# assembly if (ResourceUtility.IsResourceFile(fileName)) { name.Append(Path.Combine(path, Path.GetFileNameWithoutExtension(fileName))); name.Append(".resources"); name.Replace(Path.DirectorySeparatorChar, '.'); name.Replace(Path.AltDirectorySeparatorChar, '.'); } else { name.Append(Path.Combine(path, Path.GetFileName(fileName))); name.Replace(Path.DirectorySeparatorChar, '.'); name.Replace(Path.AltDirectorySeparatorChar, '.'); } return(name.ToString()); }