Visual Studio 2013 C#:一个解决方案使用另一个解决方案的代码

Visual Studio 2013 C#: one solution consume code of another solution

我有 Java 背景,正在尝试从 C# 开始。

我想在 C# 中创建一个将在其他解决方案中使用的库。在 Eclipse 中,只需创建一个 jar 并将其添加到类路径中即可。我知道 VS2013 中的每个项目都会成为一个 dll,但是我怎样才能使解决方案看到这些 dll?

另外,在Eclipse中,我们可以创建一个Web Fragment Project。它可以有 Servlets,jsp 和静态 js 和 css 文件,它变成一个 war 文件,可以导入到另一个项目中,它的文件在那个项目中使用。

我如何在 VS2013 中做到这一点?我想创建一个包含静态文件、母版页、一些 aspx 内容、C# dll 的解决方案,然后将它们全部用于其他解决方案。

是否有任何教程(我用谷歌搜索但没有找到)教如何做?

根据您的喜好和范围,您有几个选项

选项 1 - Class 图书馆

您可以创建 Class 库,可以在您的网站项目中引用。 Class 库是 类、接口和值类型

的库

您可以将 existing/New Class 库项目添加到您的网站解决方案并直接引用它

  1. 您可以通过右键单击
    将项目添加到您的解决方案中 解决方案(在 VS 内)-> 添加 -> 现有项目 -> 并导航至 said
    项目的 .csproj 文件

您可以使用 new/existing Class 库项目 - 构建它并在您的网站解决方案中引用构建的 dll。

  1. 您可以右键单击您的网站解决方案(在 VS 中)-> 添加 -> 新项目 -> 选择 Class 库

完成上述其中一项后 ->

  1. 右击项目,要添加引用
  2. 点击"Add Reference"
  3. 导航到有问题的 .dll。

如果您要引用的 dll 是您当前解决方案的一部分(如步骤 1 中所示)-> 在您按下 "Add Reference" 之后 - 按 "Solution" 选项卡,它应该会出现

添加 dll 后。 请记住在您的代码文件中使用

引用它
Using TheReferenceNamespace;

这将允许您像下面这样调用 dll 中的函数

FunctionInsideDll(param);

或者您可以完全限定您的调用,如下所示

TheReferenceNamespace.FunctionInsideDll(param); 

选项 2 - 共享主页

如果您只想要 "shareable" 母版页 您可以执行以下操作 -(取自此 -> MSDN 文章) (供将来参考 - web archive link - 以防万一有东西被移动)


预编译母版页中使用的代码

如果您担心母版页中的代码会被其他重复使用该页面的人看到,您可以将母版页的代码预编译到一个库中。在此库中,您可以包括 code-behind 页面以及用户或自定义控件。编译母版页不会删除母版文件或使用的任何服务器控件的声明性代码,但您可以编译母版文件以删除母版页使用的控件或 code-behind 页面的代码。

如果您选择将母版页编译成库,则必须使用允许稍后修改标记的 "updatable" 构建选项。此选项由“发布网站”对话框中的“允许预编译站点可更新”复选框决定。有关将页面预编译为可重复使用的库的详细信息,请参阅使用 VS 2005 构建 Re-Usable ASP.NET 用户控件和页面库。


选项 3 - 模板

创建一个模板,并将该模板用于不同的项目 在 Visual Studio - 按 "File" -> 导出模板 -> 按照向导操作。 导出并导入后(通过向导中的复选标记或双击 vsix 文件)- 创建新项目时,它将显示在项目模板下。

您可以通过右键单击解决方案 B 并选择 "Add existing project"

将解决方案 A 中的项目包含在解决方案 B 中

不要害怕编辑 XML .csproj 文件。例如,这有效...

<Compile Include="$(Codez)\z.Libraries\diff-match-patch\DiffMatchPatch\**\*.cs"
Exclude="NotThisOne.cs;**\NotThisFolderWith\This*.cs">
<Link>Libs\%(RecursiveDir)%(Filename)%(Extension)</Link>
</Compile>

...并将源文件夹和子文件夹中的所有 C# 文件作为目标项目中名为 \Libs\ 的文件夹中的链接文件提供给您。

  • $(Codez) 是我在 PC 上使用的 Windows 环境变量。
  • 我也可以在最后使用 *.* 而不是 *.cs
  • 这是 Visual Studio 可能会破坏您的东西之一,将文件添加到充满通配符链接文件的文件夹中可能会将它们分解为单独的条目。或不。视风而定。