---
id: troubleshootsourcecode
title: 疑难解答
---

## 一、源码编译

TouchSocket是基于Apache License 2.0免费开源的，源码托管在Gitee、Github上，如果需要编译源码，请参考以下步骤：

### 1.1 下载源码

下载源码的方式有多种。

1. 直接下载源码包，下载地址：[TouchSocket最新源码](https://gitee.com/RRQM_Home/TouchSocket/repository/archive/master.zip)
2. 使用Fork，Clone到本地。这个的优点是，可以随时提交PR，随时更新源码。

### 1.2 编译源码

编译工具我们使用VS，一般来说vs2017以上版本只需要简单配置就可以编译。如果是再低版本，则需要新建个项目，把源码复制进去，然后编译即可。

下列我们只讲说vs2017以上版本编译源码。

首先，把下载好的源码解压（如果是clone的则不用），一般目录如下：

```
├─.gitee
├─benchmark
├─Build
├─examples
├─examples_aot
├─handbook
├─images
├─performancetest
├─src
├─xunit
```

我们需要找到src目录，然后打开TouchSocket.sln的解决方案。

然后，先试下右键解决方案，选择“重新生成解决方案”。看下能否直接生成。一般的，如果你的vs是2022版本，且安装了net45，net6.0，net7.0的sdk，则可以直接生成。

如果生成成功，则生成的所有dll在Build文件夹下。

如果不能生成，则需要进行修改。

例如：

编译电脑直接使用的vs2022及以上版本，且没有安装net45的sdk所导致的。

<img src={require('@site/static/img/docs/troubleshoot-1.png').default} />

解决方法也很简单：

1. 安装net45，详情自行网络。
2. 或者取消net45的编译（删除“net45;”包括分号）。如下图：

如果要取消net45的编译，则双击项目，打开项目编辑。然后删除`net45;`

<img src={require('@site/static/img/docs/troubleshoot-2.png').default}  />

同理，如果你的vs是2017或者2019，那就需要删除net6.0，net7.0的编译。方法同上。

至此，基本上就能解决TouchSocket编译的问题了。

不过需要注意的是，即使您自己编译TouchSocket，也不能删除任何作者信息及项目名称。因为一来代码里面可能有判断程序集名称及命名空间的代码。二来，作者信息及项目名称是作者的标识，所以我们也希望您能尊重作者。