// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#if NET_2_0
-
using System;
using System.IO;
using Microsoft.Build.Framework;
//
if (References != null)
foreach (ITaskItem item in References) {
- string aliases = item.GetMetadata ("Aliases") ?? String.Empty;
- aliases = aliases.Trim ();
- if (aliases.Length > 0)
- commandLine.AppendSwitchIfNotNull ("/reference:" + aliases + "=", item.ItemSpec);
- else
+ string aliases = item.GetMetadata ("Aliases");
+ if (!string.IsNullOrEmpty (aliases)) {
+ AddAliasesReference (commandLine, aliases, item.ItemSpec);
+ } else {
commandLine.AppendSwitchIfNotNull ("/reference:", item.ItemSpec);
+ }
}
if (ResponseFiles != null)
commandLine.AppendSwitchIfNotNull ("/win32res:", Win32Resource);
}
+ static void AddAliasesReference (CommandLineBuilderExtension commandLine, string aliases, string reference)
+ {
+ foreach (var alias in aliases.Split (',')) {
+ var a = alias.Trim ();
+ if (a.Length == null)
+ continue;
+
+ var r = "/reference:";
+ if (!string.Equals (a, "global", StringComparison.OrdinalIgnoreCase))
+ r += a + "=";
+
+ commandLine.AppendSwitchIfNotNull (r, reference);
+ }
+ }
+
[MonoTODO]
protected override bool CallHostObjectToExecute ()
{
}
}
-#endif
Assert.AreEqual (String.Empty, c2.ToString (), "A2");
}
+ [Test]
+ public void TestReferencesAlias ()
+ {
+ CscExtended csc = new CscExtended ();
+ CommandLineBuilderExtension c1 = new CommandLineBuilderExtension ();
+ CommandLineBuilderExtension c2 = new CommandLineBuilderExtension ();
+
+ TaskItem ti1 = new TaskItem ("A");
+ ti1.SetMetadata ("Aliases", "r1,global,r2");
+
+ csc.References = new ITaskItem[2] { ti1, new TaskItem ("B") };
+ csc.ARFC (c1);
+ csc.ACLC (c2);
+
+ Assert.AreEqual ("/reference:r1=A /reference:A /reference:r2=A /reference:B", c1.ToString (), "A1");
+ Assert.AreEqual (String.Empty, c2.ToString (), "A2");
+ }
+
[Test]
public void TestResponseFiles ()
{