/// <summary> /// Utility function for creating a VB-style manifest name from /// a resource name. /// </summary> /// <param name="fileName">The file name of the dependent (usually a .resx)</param> /// <param name="linkFileName">The file name of the dependent (usually a .resx)</param> /// <param name="rootNamespace">The root namespace (usually from the project file). May be null</param> /// <param name="dependentUponFileName">The file name of the parent of this dependency (usually a .vb file). May be null</param> /// <param name="binaryStream">File contents binary stream, may be null</param> /// <returns>Returns the manifest name</returns> override protected string CreateManifestName ( string fileName, string linkFileName, string rootNamespace, // May be null string dependentUponFileName, // May be null Stream binaryStream // File contents binary stream, may be null ) { ITaskItem item = null; string culture = null; if (fileName != null && itemSpecToTaskitem.TryGetValue(fileName, out item)) { culture = item.GetMetadata("Culture"); } /* * Actual implementation is in a static method called CreateManifestNameImpl. * The reason is that CreateManifestName can't be static because it is an * override of a method declared in the base class, but its convenient * to expose a static version anyway for unittesting purposes. */ return(CreateVisualBasicManifestResourceName.CreateManifestNameImpl ( fileName, linkFileName, PrependCultureAsDirectory, rootNamespace, dependentUponFileName, culture, binaryStream, this.Log )); }
public void NoLogicalNameAddedForResx() { CreateVisualBasicManifestResourceName t = new CreateVisualBasicManifestResourceName(); t.BuildEngine = new MockEngine(); ITaskItem i = new TaskItem("strings.resx"); i.SetMetadata("Type", "Resx"); t.ResourceFiles = new ITaskItem[] { i }; t.RootNamespace = "ResourceRoot"; bool success = t.Execute(); Assert.True(success); // "Expected the task to succceed." ITaskItem[] resourceFiles = t.ResourceFilesWithManifestResourceNames; Assert.Equal(1, resourceFiles.Length); Assert.Equal(@"strings.resx", resourceFiles[0].ItemSpec); Assert.Equal(String.Empty, resourceFiles[0].GetMetadata("LogicalName")); }
public void PreserveLogicalNameForNonResx() { CreateVisualBasicManifestResourceName t = new CreateVisualBasicManifestResourceName(); t.BuildEngine = new MockEngine(); ITaskItem i = new TaskItem("pic.bmp"); i.SetMetadata("LogicalName", "foo"); i.SetMetadata("Type", "Non-Resx"); t.ResourceFiles = new ITaskItem[] { i }; t.RootNamespace = "ResourceRoot"; bool success = t.Execute(); Assert.True(success); // "Expected the task to succceed." ITaskItem[] resourceFiles = t.ResourceFilesWithManifestResourceNames; Assert.Equal(1, resourceFiles.Length); Assert.Equal(@"pic.bmp", resourceFiles[0].ItemSpec); Assert.Equal(@"foo", resourceFiles[0].GetMetadata("LogicalName")); }
public void ResourceFilesWithManifestResourceNamesContainsAdditionalMetadata() { CreateVisualBasicManifestResourceName t = new CreateVisualBasicManifestResourceName(); t.BuildEngine = new MockEngine(); ITaskItem i = new TaskItem("strings.resx"); t.ResourceFiles = new ITaskItem[] { i }; t.RootNamespace = "ResourceRoot"; bool success = t.Execute(); Assert.True(success); // "Expected the task to succceed." ITaskItem[] resourceFiles = t.ResourceFilesWithManifestResourceNames; Assert.Equal(1, resourceFiles.Length); Assert.Equal(@"strings.resx", resourceFiles[0].ItemSpec); Assert.Equal(@"ResourceRoot.strings", resourceFiles[0].GetMetadata("ManifestResourceName")); }
public void Regress459265() { MockEngine m = new MockEngine(); CreateVisualBasicManifestResourceName c = new CreateVisualBasicManifestResourceName(); c.BuildEngine = m; string result = CreateVisualBasicManifestResourceName.CreateManifestNameImpl ( "MyForm.resx", null, true, "RootNamespace", // Root namespace (will be ignored because it's dependent) "MyForm.vb", null, StreamHelpers.StringToStream( @"Imports System #if false Namespace ClassLibrary1 #end if #if Debug Namespace ClassLibrary2 #else Namespace ClassLibrary3 #end if Class MyForm End Class End Namespace " ), c.Log ); Assert.True( m.Log.Contains ( String.Format(AssemblyResources.GetString("CreateManifestResourceName.DefinitionFoundWithinConditionalDirective"), "MyForm.vb", "MyForm.resx") ) ); }
public void Regress188319() { CreateVisualBasicManifestResourceName t = new CreateVisualBasicManifestResourceName(); t.BuildEngine = new MockEngine(); ITaskItem i = new TaskItem("SR1.resx"); i.SetMetadata("BuildAction", "EmbeddedResource"); i.SetMetadata("DependentUpon", "SR1.strings"); // Normally, this would be a C# file. t.ResourceFiles = new ITaskItem[] { i }; t.RootNamespace = "CustomToolTest"; bool success = t.Execute(new Microsoft.Build.Tasks.CreateFileStream(CreateFileStream)); Assert.True(success); // "Expected the task to succceed." ITaskItem[] resourceNames = t.ManifestResourceNames; Assert.Equal(1, resourceNames.Length); Assert.Equal(@"CustomToolTest.SR1", resourceNames[0].ItemSpec); }