【发布时间】:2014-09-03 22:50:03
【问题描述】:
我正在尝试确定我的程序集需要编译哪些 dll。我在一个解决方案中有两个示例项目,即 Scratch 和 ScratchTest。这是 Scratch 的 Program.cs:
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 必须同时引用 Scratch 和 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 的直接依赖。
-
我正在尝试做的事情有点难以解释。我正在尝试将项目从不同的构建系统转换为 msbuild。因此,我正在编写 .csproj 文件。原始构建系统不需要引用 System.ServiceProcess.dll,因为它默认包含在 csc.rsp 中。我正在使用的新构建系统强制使用标志 /noconfig+,这意味着不包含 csc.rsp,我必须明确指定引用,并且我正在尝试检测我需要哪些。
-
有趣。因此,您有多个 .Net 项目,所有这些项目都曾经依赖 csc.rsp 进行依赖性检测。现在,您要为每个项目创建一个项目文件,并在每个项目中包含正确的依赖项。假设某些项目将依赖于其他项目是否正确,在这种情况下,您更愿意将它们添加为项目引用而不是 dll 引用?
-
另外,您是否使用 Visual Studio 作为您的 IDE?
-
我相信它们是项目引用,是的,我使用的是 VS2013。
标签: c# .net dll .net-assembly