![](/img/trans.png)
[英]Use Tfs client dll without Visual Studio for Dot net 4.5
[英]Modifying how Visual Studio/Dot Net creates DLL's?
我有一个问题,主要是出于好奇,还有一个宠物项目:
给定一个简单的C#解决方案,在构建之后,我将得到一个A.dll和一个B.dll:
Solution
- Project A
- Class A1
- Class A2
- Project B
- Class B1
- Class B2
我很好奇的是:DotNet / Visual Studio / MS Build /有什么办法以不同方式生成DLL吗?
朝着正确方向迈出的一步是从一个项目生成多个DLL,例如仅包含A1类的A.A1.dll和仅包含A2类的A.A2.dll?
一个更有趣的情况是使用A1和B1生成Lib1.dll,使用A2和B2生成Lib2.dll。
我的确意识到,在现实生活中我要问的问题的复杂性远高于给出的简单描述。
我只是想知道这在理论上是否可行(无需数千小时的工作)。 而且,如果是这样,我可以尝试什么方法?
您可以直接使用C#编译器制作DLL和EXE文件。 该编译器是.NET Framework安装的一部分,因此您不需要Visual Studio即可运行它。
Visual Studio项目文件实际上只是组织源文件,依赖项和编译器设置的便捷方法。 Visual Studio是这些项目文件之上的漂亮GUI。
使用以下文件:
C:.
│ build.bat
│ Program.cs
│
├───ProjectA
│ ClassA1.cs
│ ClassA2.cs
│
└───ProjectB
ClassB1.cs
ClassB2.cs
ClassA1.cs:
public class ClassA1
{
public static void SayHello()
{
System.Console.WriteLine("ClassA1 says Hello World!");
}
}
ClassA2.cs:
public class ClassA2
{
public static void SayHello()
{
System.Console.WriteLine("ClassA2 says Hello World!");
}
}
Program.cs中:
class Program
{
static void Main()
{
System.Console.WriteLine("Program says Hello World!");
ClassA1.SayHello();
ClassA2.SayHello();
}
}
我们使用批处理脚本build.bat使用C#编译器csc.exe构建所有内容:
REM Building my project using the C# compiler
REM NOTE: Add the path to the compiler to the path variable:
REM set path=%path;%windir%\Microsoft.NET\Framework\v4.0.30319
csc /out:A.A1.dll /target:library ProjectA\ClassA1.cs
csc /out:A.A2.dll /target:library ProjectA\ClassA2.cs
csc /out:Program.exe /r:A.A1.dll,A.A2.dll Program.cs
这将产生两个DLL( A.A1.dll和A.A2.dll )和一个使用DLL的程序( Program.exe ),如下所示:
C:.
│ A.A1.dll
│ A.A2.dll
│ build.bat
│ Program.cs
│ Program.exe
│
├───ProjectA
│ ClassA1.cs
│ ClassA2.cs
│
└───ProjectB
ClassB1.cs
ClassB2.cs
运行该程序将给出以下输出:
C:\Temp\HelloWorld>Program.exe
Program says Hello World!
ClassA1 says Hello World!
ClassA2 says Hello World!
C:\Temp\HelloWorld>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.