From: Matthew M. <mma...@us...> - 2004-07-06 00:53:20
|
Update of /cvsroot/nant/nant/src/NAnt.VSNet In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13510 Modified Files: Project.cs Resource.cs Added Files: ReferencesResolver.cs Log Message: Only add non-GAC references to license task Add missing ReferencesResolver.cs file --- NEW FILE: ReferencesResolver.cs --- // NAnt - A .NET build tool // Copyright (C) 2001-2003 Gerry Shaw // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // Matthew Mastracci (ma...@ac...) // Scott Ford (sford@RJKTECH.com) // Gert Driesen (ger...@ar...) using System; using System.CodeDom.Compiler; using System.Collections; using System.Collections.Specialized; using System.Globalization; using System.IO; using System.Reflection; using System.Runtime.Remoting.Lifetime; using System.Xml; using Microsoft.Win32; using NAnt.Core; using NAnt.Core.Util; using NAnt.VSNet.Tasks; namespace NAnt.VSNet { public class ReferencesResolver : MarshalByRefObject { #region Override implementation of MarshalByRefObject /// <summary> /// Obtains a lifetime service object to control the lifetime policy for /// this instance. /// </summary> /// <returns> /// An object of type <see cref="ILease" /> used to control the lifetime /// policy for this instance. This is the current lifetime service object /// for this instance if one exists; otherwise, a new lifetime service /// object initialized with a lease that will never time out. /// </returns> public override Object InitializeLifetimeService() { ILease lease = (ILease) base.InitializeLifetimeService(); if (lease.CurrentState == LeaseState.Initial) { lease.InitialLeaseTime = TimeSpan.Zero; } return lease; } #endregion Override implementation of MarshalByRefObject #region Public Instance Methods public void AppendReferencedModulesLocatedInGivenDirectory(string moduleDirectory, string moduleName, ref Hashtable allReferences, ref Hashtable unresolvedReferences) { Assembly module = Assembly.LoadFrom(moduleName); AssemblyName[] referencedAssemblies = module.GetReferencedAssemblies(); foreach (AssemblyName referencedAssemblyName in referencedAssemblies) { string fullPathToReferencedAssembly = Path.Combine(moduleDirectory, referencedAssemblyName.Name + ".dll"); // we only add referenced assemblies which are located in given directory if (File.Exists(fullPathToReferencedAssembly) && !allReferences.ContainsKey(fullPathToReferencedAssembly)) { allReferences.Add(fullPathToReferencedAssembly, null); unresolvedReferences.Add(fullPathToReferencedAssembly, null); } } } /// <summary> /// Gets the file name of the assembly with the given assembly name. /// </summary> /// <param name="assemblyName">The assembly name of the assembly of which the file name should be returned.</param> /// <returns> /// The file name of the assembly with the given assembly name. /// </returns> public string GetAssemblyFileName(string assemblyName) { Assembly assembly = Assembly.Load(assemblyName); return (new Uri(assembly.CodeBase)).LocalPath; } #endregion Public Instance Methods } } Index: Project.cs =================================================================== RCS file: /cvsroot/nant/nant/src/NAnt.VSNet/Project.cs,v retrieving revision 1.57 retrieving revision 1.58 diff -C2 -d -r1.57 -r1.58 *** Project.cs 5 Jul 2004 23:55:07 -0000 1.57 --- Project.cs 6 Jul 2004 00:53:10 -0000 1.58 *************** *** 216,220 **** } else { string dependentOn = (elemFile.Attributes["DependentUpon"] != null) ? Path.Combine(fi.DirectoryName, elemFile.Attributes["DependentUpon"].Value) : null; ! Resource r = new Resource(this, fi, elemFile.Attributes["RelPath"].Value, Path.Combine(fi.DirectoryName, elemFile.Attributes["DependentUpon"].Value), SolutionTask); _htResources[r.InputFile] = r; } --- 216,220 ---- } else { string dependentOn = (elemFile.Attributes["DependentUpon"] != null) ? Path.Combine(fi.DirectoryName, elemFile.Attributes["DependentUpon"].Value) : null; ! Resource r = new Resource(this, fi, elemFile.Attributes["RelPath"].Value, Path.Combine(fi.DirectoryName, elemFile.Attributes["DependentUpon"].Value), SolutionTask, GacCache); _htResources[r.InputFile] = r; } *************** *** 232,236 **** } else { string dependentOn = (elemFile.Attributes["DependentUpon"] != null) ? Path.Combine(resourceFile.DirectoryName, elemFile.Attributes["DependentUpon"].Value) : null; ! Resource r = new Resource(this, resourceFile, elemFile.Attributes["RelPath"].Value, dependentOn, SolutionTask); _htResources[r.InputFile] = r; } --- 232,236 ---- } else { string dependentOn = (elemFile.Attributes["DependentUpon"] != null) ? Path.Combine(resourceFile.DirectoryName, elemFile.Attributes["DependentUpon"].Value) : null; ! Resource r = new Resource(this, resourceFile, elemFile.Attributes["RelPath"].Value, dependentOn, SolutionTask, GacCache); _htResources[r.InputFile] = r; } Index: Resource.cs =================================================================== RCS file: /cvsroot/nant/nant/src/NAnt.VSNet/Resource.cs,v retrieving revision 1.42 retrieving revision 1.43 diff -C2 -d -r1.42 -r1.43 *** Resource.cs 3 Jul 2004 16:25:41 -0000 1.42 --- Resource.cs 6 Jul 2004 00:53:10 -0000 1.43 *************** *** 39,43 **** #region Public Instance Constructors ! public Resource(Project project, FileInfo resourceSourceFile, string resourceSourceFileRelativePath, string dependentFile, SolutionTask solutionTask) { _project = project; _resourceSourceFile = resourceSourceFile; --- 39,43 ---- #region Public Instance Constructors ! public Resource(Project project, FileInfo resourceSourceFile, string resourceSourceFileRelativePath, string dependentFile, SolutionTask solutionTask, GacCache gacCache) { _project = project; _resourceSourceFile = resourceSourceFile; *************** *** 47,50 **** --- 47,51 ---- _culture = CompilerBase.GetResourceCulture(resourceSourceFile.FullName, dependentFile); + _gacCache = gacCache; } *************** *** 193,199 **** lt.Target = Path.GetFileName(outputFileName); ! // inherit assembly references from project foreach (Reference reference in Project.References) { ! lt.Assemblies.Includes.Add(reference.Filename); } --- 194,201 ---- lt.Target = Path.GetFileName(outputFileName); ! // inherit non-GAC assembly references from project foreach (Reference reference in Project.References) { ! if (!_gacCache.IsAssemblyInGac(reference.Filename)) ! lt.Assemblies.Includes.Add(reference.Filename); } *************** *** 239,243 **** // inherit assembly references from project foreach (Reference reference in Project.References) { ! rt.Assemblies.Includes.Add(reference.Filename); } --- 241,246 ---- // inherit assembly references from project foreach (Reference reference in Project.References) { ! if (!_gacCache.IsAssemblyInGac(reference.Filename)) ! rt.Assemblies.Includes.Add(reference.Filename); } *************** *** 267,270 **** --- 270,274 ---- private Project _project; private SolutionTask _solutionTask; + private GacCache _gacCache; #endregion Private Instance Fields |