.net - vs添加文件夹 - vs运行cpp




你如何在Visual Studio中的项目/解决方案之间共享代码? (10)

File > Add > Existing Project...将允许您将项目添加到当前的解决方案。 只是增加这个,因为没有上述的帖子指出。 这可以让您在多个解决方案中包含相同的项目。

我有两个解决方案,它们有一些共同的代码,所以我想提取出来并在它们之间分享。 此外,我希望能够独立发布该图书馆,因为它可能对其他人有用。

  • 使用Visual Studio 2008做什么最好的方法是什么?
  • 项目是否存在多个解决方案?
  • 我是否有独立的代码解决方案?
  • 解决方案能否依赖另一个?

一个项目可以被多个解决方案引用。

将您的库或核心代码放入一个项目中,然后在两个解决方案中引用该项目。


在项目中重复使用代码时,使用“添加现有文件链接”的情况非常好,那就是当您需要引用和支持不同版本的相关库时。

使用不同外部程序集的引用来制作多个程序集并不容易,除非重复代码或利用源代码控制技巧。

我认为最简单的做法是维护一个项目进行开发和单元测试,然后在需要创建引用这些外部程序集的不同版本的程序集时,使用现有文件链接创建“构建”项目。


如果您试图在两个不同的项目类型(即:桌面项目和移动项目)之间共享代码,您可以查看共享解决方案文件夹 。 我必须为我当前的项目做到这一点,因为移动和桌面项目都需要只有一个文件的相同类。 如果你走这条路线,任何具有链接文件的项目都可以对其进行更改,并且所有项目都将根据这些更改进行重建。


将通用代码提取到类库项目中,并将该类库项目添加到您的解决方案中。 然后,您可以通过向该类库添加项目引用来添加对其他项目的公共代码的引用。 具有项目引用而不是二进制/程序集引用的优点是,如果将构建配置更改为调试,发布,自定义等,那么通用类库项目也将基于该配置构建。


可以在多个解决方案中包含项目。 我不认为一个项目有一个解决方案的概念。 然而,另一种选择是将第一个解决方案构建到一些众所周知的地方,并引用编译后的二进制文件。 这有一个缺点,如果你想根据是否在发布或调试配置中构建不同的版本,你需要做一些工作。

我不相信你可以让一个解决方案实际上依赖于另一个解决方案,但是你可以通过自定义脚本以适当的顺序执行你的自动化构建。 基本上把你的通用库看作是另一个像NUnit等的第三方依赖项。


您可以使用以下技术以内联方式通配符(这是@ Andomar解决方案保存在.csproj中的方式)

<Compile Include="..\MySisterProject\**\*.cs">
  <Link>_Inlined\MySisterProject\%(RecursiveDir)%(Filename)%(Extension)</Link>
</Compile>

投放:

    <Visible>false</Visible>

如果您希望隐藏文件和/或防止通配符包括被扩展,如果您添加或删除像上面的MySisterProject的“虚拟现有项目”文件夹中的项目。


您可以将同一个项目包含在多个解决方案中,但是您可以保证在某个时候出现问题(例如,当您移动目录时,相对路径可能会失效)

经过多年的努力,我终于想出了一个可行的解决方案,但它需要你使用Subversion进行源代码管理(这不是一件坏事)

在解决方案的目录级别,添加一个svn:externals属性,指向要包含在解决方案中的项目。 Subversion将从存储库中提取项目并将其存储在解决方案文件的子文件夹中。 您的解决方案文件可以简单地使用相对路径来引用您的项目。

如果我找到更多时间,我会详细解释这一点。


涉及的两个主要步骤是

1-创建一个C ++ DLL

在视觉工作室

New->Project->Class Library in c++ template. Name of project here is first_dll in 
visual studio 2010. Now declare your function as public in first_dll.h file and 
write the code in first_dll.cpp file as shown below.

头文件代码

// first_dll.h

using namespace System;

namespace first_dll 
{

public ref class Class1
{
public:
    static double sum(int ,int );
    // TODO: Add your methods for this class here.
};
}

Cpp文件

//first_dll.cpp
#include "stdafx.h"

#include "first_dll.h"

namespace first_dll
{

    double Class1:: sum(int x,int y)
    {
        return x+y;
    }

 }

选中此项

**Project-> Properties -> Configuration/General -> Configuration Type** 

此选项应该是动态库(.dll)并立即构建解决方案/项目。

first_dll.dll文件在Debug文件夹中创建

2-在C#项目中链接它

打开C#项目

Rightclick on project name in solution explorer -> Add -> References -> Browse to path 
where first_dll.dll is created and add the file.

在C#项目的顶部添加这行

Using first_dll; 

现在函数可以使用下面的语句在某些函数中访问dll

double var = Class1.sum(4,5);

我在VS2010的c ++项目中创建了dll,并在VS2013 C#项目中使用它,它运行良好。


你可以在两个项目之间“链接”一个代码文件。 右键单击您的项目,选择Add - > Existing item ,然后单击Add按钮旁边的向下箭头:

根据我的经验,链接比创建一个库更简单。 链接的代码导致单个版本的可执行文件。





code-sharing