Как включить несколько исходных файлов в С#
Я пытаюсь изучить С#, исходя из фона С++, но я не могу понять, как связать два исходных файла вместе. У меня есть относительно простая программа, называемая test.cs и main.cs. Все, что я хочу сделать, это main.cs сказать:
#include <"test.cs">
.
Ближе всего я смог придумать следующее:
<Compile Include="test.cs"/Compile>
Однако компилятор не распознает это. Итак, как я могу включить несколько исходных файлов в мой основной?
Ответы
Ответ 1
Вы передаете список исходных файлов в компилятор:
csc.exe /target:library source1.cs source2.cs
Если вы используете Visual Studio при создании нового .NET-проекта, вы можете добавить столько исходных файлов, сколько хотите, и они будут автоматически скомпилированы.
Ответ 2
Если вы создаете это в Visual Studio, то просто иметь 2 файла в одном проекте - это все, что вам нужно сделать.
Если вы компилируете в командной строке, используя csc, вы должны ссылаться на оба файла в вызове csc. См. Ответ Дарина для этого.
Нет необходимости ссылаться на один файл с другого, но самый простой способ сделать типы видимыми друг для друга - это добавить классы в каждый файл в одно и то же пространство имен.
Ответ 3
Исходные файлы не должны знать друг о друге. Возможные варианты:
- Скомпилируйте оба файла вместе, в соответствии с ответом Дарина
- Скомпилируйте один файл в библиотеку классов и добавьте ссылку на эту библиотеку при компиляции других
Это зависит от того, хотите ли вы, чтобы результат был одним или двумя. Обычно ответ заключался в том, чтобы скомпилировать их вместе в одну и ту же сборку.
Ответ 4
Если вы хотите разделить свой класс на два (или более) исходных файла, вы можете использовать определения частичного класса. Итак, в вашем случае у вас есть "класс TheClass" в main.cs и "partial class TheClass" в test.cs. Это не так, как #include, но я думаю, достаточно близко.
Ответ 5
Я часто использую команду
csc *.cs
Он пытается скомпилировать все файлы .cs в текущем каталоге. Я считаю, что это самый простой и наиболее полезный способ для такого рода компиляций командной строки, как для javas
javac *.java
Кроме того, вам не нужно беспокоиться о файле, который находится в Main(), он автоматически определяет точку входа.
Ответ 6
Вы сосете, вы сосете, вы сосете, вы сосете
Ответ 7
Я также новичок в С#. Я нашел эту ветку, когда искал ответ о том, как включить несколько исходных файлов при компиляции С# из командной строки. Но текущие ответы являются неполными, на мой взгляд. Вот кое-что, что имело бы смысл для меня сегодня утром:
Hello.cs
using System;
namespace PartialClasses
{
class Program
{
static void Main(string[] args)
{
PartialClass pc = new PartialClass();
pc.HelloWorld();
pc.HelloUniverse();
}
}
}
PartialClass1.cs
using System;
namespace PartialClasses
{
public partial class PartialClass
{
public void HelloWorld()
{
Console.WriteLine("Hello, world!");
}
}
}
PartialClass2.cs
using System;
namespace PartialClasses
{
public partial class PartialClass
{
public void HelloUniverse()
{
Console.WriteLine("Hello, universe!");
}
}
}
Я использую Mono для компиляции моих исходных файлов. И до сих пор ничего, с чем я сталкивался, не информирует меня о том, что мне нужно делать.
После некоторых копаний я нашел следующий синтаксис.
Во-первых, я хочу создать библиотеку моих частичных классов.
csc -target:library -out:myLibrary.dll Partial*.cs
Затем я хочу сослаться на ту библиотеку, которую я только что создал при компиляции моей основной программы. Мне повезло найти пример, демонстрирующий нужный мне синтаксис.
csc -reference:.\myLibrary.dll hello.cs
Вот что сработало для меня.
mono .\hello.exe
Hello, world!
Hello, universe!
Что касается директивы #include, она не нужна в С#. И я отсылаю читателя к комментарию Дэна Брайанта выше. Вместо этого сохраняйте имена классов и пространства имен прямыми и сообщайте компилятору, где найти библиотеку (которую вы создали). Вот как связь между исходными файлами осуществляется в С#.
Существует также MSBuild для файлов .csproj и более сложных проектов. Но, как новичок, я не в состоянии объяснить.
Авторы благодарны The Complete С# Tutorial за предоставление кода, который я использовал.
Для справки, ошибка компилятора, которую я получал для csc hello.cs
была CS0246. Эта статья Microsoft немного помогла. Как и -reference (параметры компилятора С#).