使用CSC命令来生成项目

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/daguanjia11/article/details/52145581

本篇博客来演示如何通过CSC命令来生成程序集和应用程序,而不使用VisualStudio。

编译c#代码使用的是csc命令,该命令位于C:\Windows\Microsoft.NET\Framework64\v4.0.30319目录下,如果你的控制台提示找不到csc命令,则需要将该路径加入到系统的环境变量中。

接下来,让我们来一步一步创建一个程序集和控制台应用程序,并通过csc命令来编译他们。

首先为类库新建一个文件夹叫做ClassLibrary1,然后进入ClassLibrary1,创建一个文件Student.cs,该文件的代码如下:

using System;

namespace ClassLibrary1
{
    public class Student
    {
        public string Method()
        {
            return "student instance";
        }
    }
}

接下来,我们在Student.cs目录的当前位置新建一个bin文件夹,然后进入bin后再新建一个debug文件夹。回到根目录,打开一个命令行,输入以下命令来讲该类编译为一个程序集。

csc /out:ClassLibrary1\bin\debug\Classlibrary1.dll /target:library ClassLibrary1\Student.cs

先稍微解释下两个参数:

  1. /out 这个是csc命令输出的文件,这里是将生成的文件输出为ClassLibrary1\bin\debug\Classlibrary1.dll
  2. /target是目标类型,这里的值为library,意思是输出为类库,即dll文件。

/target经常使用以下类型:

  • /target:exe是默认值,会生成一个windows控制台应用程序
  • /target:winexe会生成一个windows桌面应用程序
  • /target:library会生成一个动态库文件
  • -

有了类库组件,接下来创建一个控制台应用程序。我们在根目录新建一个文件夹叫BuildAssembly,进去后创建bin文件夹,然后进入bin,再创建debug文件夹,然后回到BuildAssembly文件夹,创建两个类,Car.cs和Program.cs,代码如下:

using System;

namespace BuildAssembly
{
    public class Car
    {
        public string Method()
        {
            return "car instance";
        }
    }
}
using ClassLibrary1;
using System;

namespace BuildAssembly
{
    class Program
    {
        static void Main(string[] args)
        {
            Car car = new Car();
            Console.WriteLine(car.Method());

            Student student = new Student();
            Console.WriteLine(student.Method());
            Console.ReadKey();
        }
    }
}

然后开始编译

csc /out:BuildAssembly\bin\debug\BuildAssembly.exe /target:exe /reference:ClassLibrary1\bin\debug\ClassLibrary1.dll  BuildAssembly\Car.cs BuildAssembly\Program.cs

这里新增了一个参数是:reference,意思是引用了哪些程序集文件,这里我们指定ClassLibrary1\bin\debug\ClassLibrary1.dll文件。我们的BuildAssembly.exe文件已经生成了,运行下发现抛出了异常,

Unhandled Exception: System.IO.FileNotFoundException: Could not load file or ass
embly 'Classlibrary1, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' or
one of its dependencies. The system cannot find the file specified.
   at BuildAssembly.Program.Main(String[] args)

仔细看一下,是无法载入Classlibrary1程序集,我们只需要把这个文件拷贝到BuildAssembly.exe的同级目录,再次运行BuildAssembly.exe就可以了。

我们并没有在VisualStudio中添加对ClassLibrary1.dll的引用,而是在编译时指定了一个参数,并且代码可以通过编译并正常运行。

没有更多推荐了,返回首页