我想确定哪些DLL我的程序集需要编译。我在一个解决方案中有两个示例项目,Scratch和ScratchTest。这里是Scratch's Program.cs:C#隐藏的引用
using System.ServiceProcess;
namespace Scratch
{
public class A : ServiceBase
{
static void Main(string[] args)
{
}
}
}
Scratch引用System.ServiceProcess.dll。
这里是ScratchTest的Program.cs的:
namespace ScratchTest
{
class Program
{
static void Main(string[] args)
{
Scratch.A o;
}
}
}
ScratchTest具有同时引用划痕和System.ServiceProcess.dll。但是,由此产生的ScratchTest.dll没有引用System.ServiceProcess.dll,只有Scratch。我知道这两个通过看看
Assembly.GetReferencedAssemblies()
并通过使用.net反射器。所以我的问题是,我怎么知道ScratchTest需要System.ServiceProcess.dll来编译?特别是考虑到SratchTest不一定要引用Scratch的所有参考资料,因为可能会有一些冲突。谢谢,埃里克
这将是有用的知道你正在试图用这些信息。另外,请记住直接依赖和间接依赖之间的区别。 ScratchTest直接依赖于Scratch。 ScratchTest对System.ServiceProcess.dll具有间接依赖性,因为System.ServiceProcess.dll是Scratch的直接依赖。 – 2014-09-03 23:11:07
我想要做的是有点难以解释。我正试图将一个项目从一个不同的构建系统转换为msbuild。因此我正在编写.csproj文件。原始的构建系统不需要引用System.ServiceProcess.dll,因为它默认包含在csc.rsp中。我使用的新构建系统强制使用flag/noconfig +,这意味着csc.rsp不会被包含在内,我必须明确指定引用,并且试图检测我需要的引用。 – 2014-09-03 23:29:32
有趣。所以你有多个.Net项目,他们都依赖于csc.rsp进行依赖性检测。现在您要为每个项目创建一个项目文件,并在每个项目中包含正确的依赖关系。假设某些项目将依赖于其他项目是否正确?在这种情况下,您更愿意将它们添加为项目引用而不是dll参考? – 2014-09-04 00:15:20