Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

提供如何构建DDTVLiveRec的文档 #55

Closed
uchuhimo opened this issue Jan 10, 2021 · 8 comments
Closed

提供如何构建DDTVLiveRec的文档 #55

uchuhimo opened this issue Jan 10, 2021 · 8 comments

Comments

@uchuhimo
Copy link
Contributor

我想修改DDTVLiveRec的代码,想知道如何构建,包括:

  1. 如何在windows下构建DDTVLiveRec
  2. (可选)如何在Linux下构建DDTVLiveRec。如果能在Linux下构建,能极大简化Docker镜像的构造流程,有助于在Linux上的分发
@CHKZL
Copy link
Owner

CHKZL commented Jan 11, 2021

1A:直接Clone项目即可,里面的DDTVLiveRec项目直接neget过后直接编译即可
2A:理论上直接安装.NET5.0以上版本的SDK即可进行编译

PS:可以直接加README里面的群号加群手 把 手 一 起 开 车

@uchuhimo
Copy link
Contributor Author

uchuhimo commented Jan 12, 2021

在Windows上编译没有问题,在Linux上编译需要一些修改。
我把需要修改的地方放在了pull request里:#56
修改之后在两个平台上都能成功编译,命令为:

cd DDTVLiveRec
dotnet publish -c Release /p:DebugType=None

构建输出在DDTVLiveRec/bin/Release/net5.0/publish/目录下。
我没有测试过修改后DDTV_New能不能成功编译,你可以测试一下,或者告诉我怎么编译DDTV_New我这边测试一下。

@CHKZL
Copy link
Owner

CHKZL commented Jan 12, 2021

DDTV_New里面有win下特有的一些操作,没办法跨平台,只能在WIN上编译
DDTV_New项目肯定是无法在linux下编译成功的并运行的,本身就不是用Net5或者core3.1之类构建的,肯定无法跨平台

@uchuhimo
Copy link
Contributor Author

uchuhimo commented Jan 12, 2021

@CHKZL 我明白DDTV_New无法在Linux下编译,但是因为DDTVLiveRec和DDTV_New共享了Auxiliary,我需要测试引入的修改有没有破坏DDTV_New在Windows下的编译。
目前我使用以下指令在Windows下编译DDTV_New是能够成功的:

msbuild /property:Configuration=Release

但我不知道你是如何编译和打包DDTV_New的,所以不知道有没有破坏你的工作流。

@CHKZL
Copy link
Owner

CHKZL commented Jan 12, 2021

对于DDTV的打包就是直接Release编译,没有其他操作

@uchuhimo
Copy link
Contributor Author

@CHKZL 我尝试了编译DDTV_New,遇到以下问题:

  • DDTV_New.slnDDTV_TCP服务端礼物播报等项目不存在,删除对应引用后解决;
  • libffmpeg\youtube-dl.exe 不存在,删除 DDTV_New/DDTV_New.csproj 中对应引用后解决;
  • 更新日志\2.0.4.1a.txt更新日志\2.0.4.3b.txt更新日志\2.0.4.1a.txt三个文件不存在,删除 DDTV_New/DDTV_New.csproj 中对应引用后解决,但根本问题应该是.gitignore中ignore了/DDTV_New/更新日志,导致新的更新日志无法提交到git仓库中。

解决了这些问题后,DDTV_New能够顺利编译,但编译生成的DDTV_New\bin\Release\DDTV_New.exe仍然无法正常运行,双击运行没有反应。

@uchuhimo
Copy link
Contributor Author

我尝试回退 #56 ,重新clone CHKZL/DDTV2,使用vs2019编译会报错:

已启动生成…
1>------ 已启动生成: 项目: Auxiliary, 配置: Release Any CPU ------
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\NuGet\16.0\Microsoft.NuGet.targets(198,5): error : Your project does not reference ".NETFramework,Version=v4.7.2" framework. Add a reference to ".NETFramework,Version=v4.7.2" in the "TargetFrameworks" property of your project file and then re-run NuGet restore.
2>------ 已启动生成: 项目: PlayW, 配置: Release Any CPU ------
3>------ 已启动生成: 项目: DDTVLiveRecWebServer, 配置: Release Any CPU ------
2>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets(2744,5): warning MSB3284: 无法获取类型库“a9757030-96f6-485e-a8ab-5b5137462472”版本 1.0 的文件路径。Library not registered. (异常来自 HRESULT:0x8002801D (TYPE_E_LIBNOTREGISTERED))
2>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets(2744,5): warning MSB3305: 从路径“C:\Windows\SysWOW64\atl.dll”处理 COM 引用“ATLLib”。类型库导入程序遇到无有效返回类型的属性 getter“ShowGrabHandles”(它位于类型“ATLLib.IAxWinAmbientDispatch”上)。导入程序将尝试将此属性作为方法导入。
2>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets(2744,5): warning MSB3305: 从路径“C:\Windows\SysWOW64\atl.dll”处理 COM 引用“ATLLib”。类型库导入程序遇到无有效返回类型的属性 getter“ShowHatching”(它位于类型“ATLLib.IAxWinAmbientDispatch”上)。导入程序将尝试将此属性作为方法导入。
3>C:\Program Files\dotnet\sdk\5.0.101\Sdks\Microsoft.NET.Sdk.Razor\build\netstandard2.0\Microsoft.NET.Sdk.Razor.MvcApplicationPartsDiscovery.targets(54,5): warning RAZORSDK1007: Reference assembly D:\repo\Github\DDTV2\Auxiliary\bin\Release\Auxiliary.exe could not be found. This is typically caused by build errors in referenced projects.
2>CSC : error CS0006: 未能找到元数据文件“D:\repo\Github\DDTV2\Auxiliary\bin\Release\Auxiliary.exe”
3>CSC : error CS0006: 未能找到元数据文件“D:\repo\Github\DDTV2\Auxiliary\bin\Release\Auxiliary.exe”
4>------ 已启动生成: 项目: DDTV_New, 配置: Release Any CPU ------
3>已完成生成项目“DDTVLiveRecWebServer.csproj”的操作 - 失败。
5>------ 已启动生成: 项目: DDTVLiveRec, 配置: Release Any CPU ------
4>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets(2123,5): warning MSB3245: 未能解析此引用。未能找到程序集“AxInterop.APlayer3Lib”。请检查磁盘上是否存在该程序集。 如果您的代码需要此引用,则可能出现编译错误。
4>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets(2123,5): warning MSB3245: 未能解析此引用。未能找到程序集“Interop.APlayer3Lib”。请检查磁盘上是否存在该程序集。 如果您的代码需要此引用,则可能出现编译错误。
5>CSC : error CS0006: 未能找到元数据文件“D:\repo\Github\DDTV2\Auxiliary\bin\Release\Auxiliary.exe”
5>CSC : error CS0006: 未能找到元数据文件“D:\repo\Github\DDTV2\DDTVLiveRecWebServer\bin\Release\netcoreapp3.1\DDTVLiveRecWebServer.dll”
5>已完成生成项目“DDTVLiveRec.csproj”的操作 - 失败。
4>CSC : error CS0006: 未能找到元数据文件“D:\repo\Github\DDTV2\Auxiliary\bin\Release\Auxiliary.exe”
4>CSC : error CS0006: 未能找到元数据文件“D:\repo\Github\DDTV2\PlayW\bin\Release\PlayW.exe”
========== 生成: 成功 0 个,失败 5 个,最新 0 个,跳过 0 个 ==========

@uchuhimo
Copy link
Contributor Author

DDTV_New的编译问题已经解决,详见 #56

@CHKZL CHKZL closed this as completed Jan 14, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants