Commit cfd0eb72 by mahaisong

feat:图片转视频、视频加笔刷、倒计时

parent 7f292e55
...@@ -10,6 +10,12 @@ using MediaFoundation.Misc; ...@@ -10,6 +10,12 @@ using MediaFoundation.Misc;
using MediaFoundation.Transform; using MediaFoundation.Transform;
using TantaCommon; using TantaCommon;
////通过读取缓存中公有、固定的变量值刷新。读的时候不lock,增长时lock或阻塞队列。不允许丢失。
///或者是Cuncurrent集合,记录当前进入班级的同学ID。可以防止重复。 统计Count即可。
/// +------------------------------------------------------------------------------------------------------------------------------+ /// +------------------------------------------------------------------------------------------------------------------------------+
/// ¦ TERMS OF USE: MIT License ¦ /// ¦ TERMS OF USE: MIT License ¦
/// +------------------------------------------------------------------------------------------------------------------------------¦ /// +------------------------------------------------------------------------------------------------------------------------------¦
...@@ -84,7 +90,7 @@ namespace GISportService ...@@ -84,7 +90,7 @@ namespace GISportService
/// <history> /// <history>
/// 01 Nov 18 Cynic - Ported In /// 01 Nov 18 Cynic - Ported In
/// </history> /// </history>
public sealed class CanvaWriteText_Sync : TantaMFTBase_Sync public sealed class Countdown_Signin_Sync : TantaMFTBase_Sync
{ {
// Format information // Format information
private int m_imageWidthInPixels; private int m_imageWidthInPixels;
...@@ -115,7 +121,7 @@ namespace GISportService ...@@ -115,7 +121,7 @@ namespace GISportService
/// <history> /// <history>
/// 01 Nov 18 Cynic - Ported In /// 01 Nov 18 Cynic - Ported In
/// </history> /// </history>
public CanvaWriteText_Sync() : base() public Countdown_Signin_Sync() : base()
{ {
// init this now // init this now
m_FrameCount = 0; m_FrameCount = 0;
...@@ -130,7 +136,7 @@ namespace GISportService ...@@ -130,7 +136,7 @@ namespace GISportService
/// <history> /// <history>
/// 01 Nov 18 Cynic - Ported In /// 01 Nov 18 Cynic - Ported In
/// </history> /// </history>
~CanvaWriteText_Sync() ~Countdown_Signin_Sync()
{ {
// DebugMessage("MFTTantaWriteText_Sync Destructor"); // DebugMessage("MFTTantaWriteText_Sync Destructor");
...@@ -397,7 +403,7 @@ namespace GISportService ...@@ -397,7 +403,7 @@ namespace GISportService
} }
// Calculate the image size (including padding) // Calculate the image size (including padding)
m_cbImageSize = m_imageHeightInPixels * m_lStrideIfContiguous;//m_lStrideIfContiguous m_cbImageSize = m_imageHeightInPixels * m_lStrideIfContiguous;
// now perform the initial setup of the fonts we will use to draw the text. // now perform the initial setup of the fonts we will use to draw the text.
// since this information does not change (without a format change event) // since this information does not change (without a format change event)
...@@ -479,19 +485,19 @@ namespace GISportService ...@@ -479,19 +485,19 @@ namespace GISportService
{ {
HResult hr = HResult.S_OK; HResult hr = HResult.S_OK;
//// While we accept types that *might* be interlaced, if we actually receive // While we accept types that *might* be interlaced, if we actually receive
//// an interlaced sample, reject it. // an interlaced sample, reject it.
//if (m_MightBeInterlaced == true) if (m_MightBeInterlaced == true)
//{ {
// int ix; int ix;
// // Returns a bool: true = interlaced, false = progressive // Returns a bool: true = interlaced, false = progressive
// hr = InputSample.GetUINT32(MFAttributesClsid.MFSampleExtension_Interlaced, out ix); hr = InputSample.GetUINT32(MFAttributesClsid.MFSampleExtension_Interlaced, out ix);
// if (hr != HResult.S_OK || ix != 0) if (hr != HResult.S_OK || ix != 0)
// { {
// hr = HResult.E_FAIL; hr = HResult.E_FAIL;
// } }
//} }
return hr; return hr;
} }
...@@ -514,11 +520,11 @@ namespace GISportService ...@@ -514,11 +520,11 @@ namespace GISportService
HResult hr = HResult.S_OK; HResult hr = HResult.S_OK;
// see if the media type is one of our list of acceptable subtypes // see if the media type is one of our list of acceptable subtypes
//hr = TantaWMFUtils.CheckMediaType(pmt, MFMediaType.Video, m_MediaSubtypes); hr = TantaWMFUtils.CheckMediaType(pmt, MFMediaType.Video, m_MediaSubtypes);
//if (hr != HResult.S_OK) if (hr != HResult.S_OK)
//{ {
// throw new Exception("OnCheckMediaType call to TantaWMFUtils.CheckMediaType failed. Err=" + hr.ToString()); throw new Exception("OnCheckMediaType call to TantaWMFUtils.CheckMediaType failed. Err=" + hr.ToString());
//} }
// Video must be progressive frames. Set this now // Video must be progressive frames. Set this now
m_MightBeInterlaced = false; m_MightBeInterlaced = false;
...@@ -633,7 +639,7 @@ namespace GISportService ...@@ -633,7 +639,7 @@ namespace GISportService
// you have to copy it about. See the MFTTantaGrayscale_Sync code. // you have to copy it about. See the MFTTantaGrayscale_Sync code.
// The strings to display. // The strings to display.
string sString1 = "Hello!"; string sString1 = "签到中";
string sString2 = m_FrameCount.ToString(); string sString2 = m_FrameCount.ToString();
// A wrapper around the video data. // A wrapper around the video data.
...@@ -654,12 +660,16 @@ namespace GISportService ...@@ -654,12 +660,16 @@ namespace GISportService
g.DrawString(sString1, m_fontOverlay, System.Drawing.Brushes.Red, sLeft, sTop, StringFormat.GenericTypographic); g.DrawString(sString1, m_fontOverlay, System.Drawing.Brushes.Red, sLeft, sTop, StringFormat.GenericTypographic);
// Add a frame number in the bottom right using the transparent font created earlier // Add a frame number in the bottom right using the transparent font created earlier
d = g.MeasureString(sString2, m_transparentFont); //d = g.MeasureString(sString2, m_transparentFont);
sLeft = (m_imageWidthInPixels - d.Width) - 10.0f; //sLeft = (m_imageWidthInPixels - d.Width) - 10.0f;
sTop = (m_imageHeightInPixels - d.Height) - 10.0f; //sTop = (m_imageHeightInPixels - d.Height) - 10.0f;
//g.DrawString(sString2, m_transparentFont, m_transparentBrush, sLeft, sTop, StringFormat.GenericTypographic);
g.DrawString(sString2, m_transparentFont, m_transparentBrush, sLeft, sTop, StringFormat.GenericTypographic); d = g.MeasureString(sString2, m_fontOverlay);
sLeft = 0;
sTop = 0;
g.DrawString(sString2, m_fontOverlay, System.Drawing.Brushes.Red, sLeft, sTop, StringFormat.GenericTypographic);
} }
} }
......
...@@ -400,7 +400,7 @@ namespace GISportService ...@@ -400,7 +400,7 @@ namespace GISportService
// audioThreadMethodHelper.enumstate = TantaEVRPlayerStateEnum.OpenPending; // audioThreadMethodHelper.enumstate = TantaEVRPlayerStateEnum.OpenPending;
// audioThread.Start(audioThreadMethodHelper); ;//构建拓扑 音频流 // audioThread.Start(audioThreadMethodHelper); ;//构建拓扑 音频流
//} //}
Thread.Sleep(HEARTBEAT_DELAYTIME); Thread.Sleep(HEARTBEAT_DELAYTIME*1000);
} }
catch (Exception ex) catch (Exception ex)
{ {
...@@ -856,12 +856,9 @@ namespace GISportService ...@@ -856,12 +856,9 @@ namespace GISportService
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
private IMFTransform CreateTransformObjectAccordingToDisplay(string kongjian) private IMFTransform CreateTransformObjectAccordingToDisplay(string kongjian)
{ {
if (kongjian== "Signin") return new CanvaWriteText_Sync(); if (kongjian== "Signin") return new Countdown_Signin_Sync();
//if (radioButtonMFTGrayscaleAsync.Checked == true) return new MFTTantaGrayscale_Async();
//if (radioButtonMFTWriteText.Checked == true) return new MFTTantaWriteText_Sync(); ;
//if (radioButtonMFTGrayscaleSync.Checked == true) return new MFTTantaGrayscale_Sync();
//if (radioButtonMFTFrameCounter.Checked == true) return new MFTTantaFrameCounter_Sync();
return null; return null;
} }
...@@ -1101,7 +1098,7 @@ namespace GISportService ...@@ -1101,7 +1098,7 @@ namespace GISportService
} }
} }
//VideoTransform = CreateTransformObjectAccordingToDisplay(kongjian); VideoTransform = CreateTransformObjectAccordingToDisplay(kongjian);
if (VideoTransform != null) if (VideoTransform != null)
{ {
// we do have an MFT transform object. Insert it into the topology between the source and output // we do have an MFT transform object. Insert it into the topology between the source and output
...@@ -1113,7 +1110,7 @@ namespace GISportService ...@@ -1113,7 +1110,7 @@ namespace GISportService
{ {
throw new Exception("OpenVideoFileAndPrepareSessionAndPlay call to MFExtern.MFCreateTopologyNode failed. Err=" + hr.ToString()); throw new Exception("OpenVideoFileAndPrepareSessionAndPlay call to MFExtern.MFCreateTopologyNode failed. Err=" + hr.ToString());
} }
// set the transform object (it is an IMFTransform) as an object on the transform node. Since it is already there // set the transform object (it is an IMFTransform) as an object on the transform node. Since it is already there
// the topology does not need a GUID or activator to create it // the topology does not need a GUID or activator to create it
hr = tmpTransformNode.SetObject(VideoTransform); hr = tmpTransformNode.SetObject(VideoTransform);
...@@ -1200,6 +1197,7 @@ namespace GISportService ...@@ -1200,6 +1197,7 @@ namespace GISportService
throw new Exception("OpenVideoFileAndPrepareSessionAndPlay call to sourceVideoNode.ConnectOutput failed. Err=" + hr.ToString()); throw new Exception("OpenVideoFileAndPrepareSessionAndPlay call to sourceVideoNode.ConnectOutput failed. Err=" + hr.ToString());
} }
} }
if (type == 2)//视频 if (type == 2)//视频
{ {
...@@ -1258,6 +1256,10 @@ namespace GISportService ...@@ -1258,6 +1256,10 @@ namespace GISportService
{ {
Marshal.ReleaseComObject(sourceVideoNode); Marshal.ReleaseComObject(sourceVideoNode);
} }
if (VideoTransformNode != null)
{
Marshal.ReleaseComObject(VideoTransformNode);
}
if (outputSinkNodeVideo != null) if (outputSinkNodeVideo != null)
{ {
Marshal.ReleaseComObject(outputSinkNodeVideo); Marshal.ReleaseComObject(outputSinkNodeVideo);
......
...@@ -160,7 +160,7 @@ ...@@ -160,7 +160,7 @@
<Compile Include="FilePlayer.Designer.cs"> <Compile Include="FilePlayer.Designer.cs">
<DependentUpon>FilePlayer.cs</DependentUpon> <DependentUpon>FilePlayer.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="CanvaWriteText_Sync.cs" /> <Compile Include="Control\Countdown_Signin_Sync.cs" />
<Compile Include="PlayDemo.cs"> <Compile Include="PlayDemo.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
......
...@@ -122,6 +122,7 @@ namespace GISportService ...@@ -122,6 +122,7 @@ namespace GISportService
FilePlayer1.InitMediaPlayer(); FilePlayer1.InitMediaPlayer();
//加载命令服务 //加载命令服务
RemotingServer.getInstance(FilePlayer1); RemotingServer.getInstance(FilePlayer1);
} }
public void PlayerStateChangedEventHandler(object sender, TantaEVRPlayerStateEnum playerState) public void PlayerStateChangedEventHandler(object sender, TantaEVRPlayerStateEnum playerState)
{ {
......
...@@ -46,12 +46,17 @@ namespace GISportService ...@@ -46,12 +46,17 @@ namespace GISportService
////-pix_fmt format set pixel format, 'list' as argument shows all the pixel formats supported yuv420p ////-pix_fmt format set pixel format, 'list' as argument shows all the pixel formats supported yuv420p
////-vcodec codec 强制使用codec编解码方式('copy' to copy stream) ////-vcodec codec 强制使用codec编解码方式('copy' to copy stream)
////-b bitrate 设置比特率,缺省200kb/s ////-b bitrate 设置比特率,缺省200kb/s
/// -an 不处理音频
////-s size 设置帧大小 格式为WXH 缺省160X128.下面的简写也可以直接使用: ////-s size 设置帧大小 格式为WXH 缺省160X128.下面的简写也可以直接使用:
////ffmpeg中采用H264,H265标准编码时,可能需要设置preset、 ////ffmpeg中采用H264,H265标准编码时,可能需要设置preset、
////转码-crf在优先保证画面质量(也不太在乎转码时间)的情况下,使用 - crf参数来控制转码是比较适宜的。这个参数的取值范围为0~51,其中0为无损模式,数值越大,画质越差,生成的文件却越小。从主观上讲,18~28是一个合理的范围。18被认为是视觉无损的(从技术角度上看当然还是有损的),它的输出视频质量和输入视频相当。 ////转码-crf在优先保证画面质量(也不太在乎转码时间)的情况下,使用 - crf参数来控制转码是比较适宜的。这个参数的取值范围为0~51,其中0为无损模式,数值越大,画质越差,生成的文件却越小。从主观上讲,18~28是一个合理的范围。18被认为是视觉无损的(从技术角度上看当然还是有损的),它的输出视频质量和输入视频相当。
////-vframes number 设置转换多少桢(frame)的视频 ////-vframes number 设置转换多少桢(frame)的视频
////-t duration 设置纪录时间 hh:mm:ss[.xxx]格式的记录时间也支持 ////-t duration 设置纪录时间 hh:mm:ss[.xxx]格式的记录时间也支持
//string test2 = " -r 25 -loop 1 -i D:/GISports/img/f6ed67ae-02a4-46fd-8fcb-7944918b5c27.jpg -pix_fmt yuv420p -vcodec libx264 -b:v 600k -r:v 25 -preset medium -crf 30 -s 720x576 -r 25 -t 20 D:/GISports/img/h.mp4"; ///主要参数: -i 设定输入流 -f 设定输出格式 -ss 开始时间 视频参数: -b 设定视频流量,默认为200Kbit/s -r 设定帧速率,默认为25 -s 设定画面的宽与高 -aspect 设定画面的比例 -vn 不处理视频 -vcodec 设定视频编解码器,未设定时则使用与输入流相同的编解码器
///音频参数: -ar 设定采样率 -ac 设定声音的Channel数 -acodec 设定声音编解码器,未设定时则使用与输入流相同的编解码器 -an 不处理音频
/////-r 提取图像的频率,-ss 开始时间,-t 持续时间
/////-bf B帧数目控制,-g 关键帧间隔控制,-s 分辨率控制
//string test2 = " -r 25 -loop 1 -i D:/GISports/img/f6ed67ae-02a4-46fd-8fcb-7944918b5c27.jpg -pix_fmt yuv420p -vcodec mpeg4 -b:v 600k -r:v 25 -preset medium -crf 30 -s 720x576 -r 25 -t 20 D:/GISports/img/h.mp4";
//string message = Processor.Execute(true, test2); //string message = Processor.Execute(true, test2);
string configinputPath = "D:/GISports"; string configinputPath = "D:/GISports";
...@@ -128,7 +133,7 @@ namespace GISportService ...@@ -128,7 +133,7 @@ namespace GISportService
string input = configinputPath + viewmodel.RPath; string input = configinputPath + viewmodel.RPath;
string output = configOutputPath + viewmodel.VID + ".mp4";//固定转换 string output = configOutputPath + viewmodel.VID + ".mp4";//固定转换
string goffmpeg = " -r 25 -loop 1 -i " + input + " -pix_fmt yuv420p -vcodec libx264 -b:v 600k -r:v 25 -preset medium -crf 30 -s 720x576 -r 25 -t " + sec + " " + output + ""; string goffmpeg = " -r 25 -loop 1 -i " + input + " -pix_fmt yuv420p -vcodec mpeg4 -b:v 600k -r:v 25 -preset medium -crf 30 -s 1920x1080 -r 25 -t " + sec + " " + output + "";
string message = Processor.Execute(true, goffmpeg); string message = Processor.Execute(true, goffmpeg);
} }
} }
......
条件编译: 条件编译:
在demo下会对制定的图片资源编译成视频。--已测试正常, 准备给前端PC配置资源时使用,自动将图片资源+时长,转换出同长的视频。 在demo下会对制定的图片资源编译成视频。--已测试正常, 准备给前端PC配置资源时使用(方法是Program中图片转视频的方法、路径),自动将图片资源+时长,转换出同长的视频。
在Debug下会打印每个资源具体播放时间。--已测试完全相等于数据库配置 在Debug下会打印每个资源具体播放时间。--已测试完全相等于数据库配置
\ No newline at end of file singin 等倒计时定制控件,是实时的对每一个帧进行重写,背景视频时不断重新播放的。
预期:
1.篮球背景图,需要有课程介绍。
从数据库抽出文字,进行绘制。但是字体和位置都是固定的。所以数量一定不能多。
如果有特殊需要,在某个位置播放图片或视频,则需要再叠加处理。
2.课程结束图,需要刷新课程统计结果。一次统计,不断刷新展示。
还可能的更改:
canvas绘制时,使用真的图片覆盖,指定时长。 但是可能无法输出到Device,只能让显示屏显示 电脑屏幕。
现在把图片编译成视频,可以直接输出到 输出信号Device。
...@@ -20,6 +20,12 @@ ...@@ -20,6 +20,12 @@
</assemblyBinding> </assemblyBinding>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly> <dependentAssembly>
<assemblyIdentity name="Microsoft.Extensions.Configuration" publicKeyToken="adb9793829ddae60" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.2.0.0" newVersion="2.2.0.0" />
</dependentAssembly>
</assemblyBinding>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> <assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" /> <bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly> </dependentAssembly>
......
2018-12-27 09:53:39,547 [1] ERROR EFCoreInitConfig.Config [(null)] - 数据库配置项,约定枚举中不存在GISportsModels,临时以key value 方式加载。 :
2018-12-27 09:54:28,825 [1] ERROR EFCoreInitConfig.Config [(null)] - 数据库配置项,约定枚举中不存在GISportsModels,临时以key value 方式加载。 :
2018-12-27 09:59:27,943 [1] ERROR EFCoreInitConfig.Config [(null)] - 数据库配置项,约定枚举中不存在GISportsModels,临时以key value 方式加载。 :
...@@ -379,3 +379,33 @@ ...@@ -379,3 +379,33 @@
12/19/2018 17:28:38 GISportService.FilePlayer: ctlTantaEVRFilePlayer_SizeChanged 12/19/2018 17:28:38 GISportService.FilePlayer: ctlTantaEVRFilePlayer_SizeChanged
12/26/2018 10:29:43 GISportService.FilePlayer: ctlTantaEVRFilePlayer_SizeChanged 12/26/2018 10:29:43 GISportService.FilePlayer: ctlTantaEVRFilePlayer_SizeChanged
12/26/2018 10:29:43 GISportService.FilePlayer: ctlTantaEVRFilePlayer_SizeChanged 12/26/2018 10:29:43 GISportService.FilePlayer: ctlTantaEVRFilePlayer_SizeChanged
12/26/2018 19:27:19 GISportService.FilePlayer: ctlTantaEVRFilePlayer_SizeChanged
12/26/2018 19:27:19 GISportService.FilePlayer: ctlTantaEVRFilePlayer_SizeChanged
12/26/2018 19:31:33 GISportService.FilePlayer: ctlTantaEVRFilePlayer_SizeChanged
12/26/2018 19:31:33 GISportService.FilePlayer: ctlTantaEVRFilePlayer_SizeChanged
12/26/2018 19:32:14 GISportService.FilePlayer: ctlTantaEVRFilePlayer_SizeChanged
12/26/2018 19:32:14 GISportService.FilePlayer: ctlTantaEVRFilePlayer_SizeChanged
12/26/2018 19:34:20 GISportService.FilePlayer: ctlTantaEVRFilePlayer_SizeChanged
12/26/2018 19:34:20 GISportService.FilePlayer: ctlTantaEVRFilePlayer_SizeChanged
12/26/2018 19:41:38 GISportService.FilePlayer: ctlTantaEVRFilePlayer_SizeChanged
12/26/2018 19:41:38 GISportService.FilePlayer: ctlTantaEVRFilePlayer_SizeChanged
12/26/2018 19:49:25 GISportService.FilePlayer: ctlTantaEVRFilePlayer_SizeChanged
12/26/2018 19:49:25 GISportService.FilePlayer: ctlTantaEVRFilePlayer_SizeChanged
12/26/2018 19:50:58 GISportService.FilePlayer: ctlTantaEVRFilePlayer_SizeChanged
12/26/2018 19:50:58 GISportService.FilePlayer: ctlTantaEVRFilePlayer_SizeChanged
12/26/2018 19:51:50 GISportService.FilePlayer: ctlTantaEVRFilePlayer_SizeChanged
12/26/2018 19:51:50 GISportService.FilePlayer: ctlTantaEVRFilePlayer_SizeChanged
12/26/2018 19:54:05 GISportService.FilePlayer: ctlTantaEVRFilePlayer_SizeChanged
12/26/2018 19:54:05 GISportService.FilePlayer: ctlTantaEVRFilePlayer_SizeChanged
12/26/2018 20:06:36 GISportService.FilePlayer: ctlTantaEVRFilePlayer_SizeChanged
12/26/2018 20:06:36 GISportService.FilePlayer: ctlTantaEVRFilePlayer_SizeChanged
12/26/2018 20:09:35 GISportService.FilePlayer: ctlTantaEVRFilePlayer_SizeChanged
12/26/2018 20:09:35 GISportService.FilePlayer: ctlTantaEVRFilePlayer_SizeChanged
12/26/2018 20:10:19 GISportService.FilePlayer: ctlTantaEVRFilePlayer_SizeChanged
12/26/2018 20:10:19 GISportService.FilePlayer: ctlTantaEVRFilePlayer_SizeChanged
12/27/2018 09:53:42 GISportService.FilePlayer: ctlTantaEVRFilePlayer_SizeChanged
12/27/2018 09:53:42 GISportService.FilePlayer: ctlTantaEVRFilePlayer_SizeChanged
12/27/2018 09:54:30 GISportService.FilePlayer: ctlTantaEVRFilePlayer_SizeChanged
12/27/2018 09:54:30 GISportService.FilePlayer: ctlTantaEVRFilePlayer_SizeChanged
12/27/2018 09:59:30 GISportService.FilePlayer: ctlTantaEVRFilePlayer_SizeChanged
12/27/2018 09:59:30 GISportService.FilePlayer: ctlTantaEVRFilePlayer_SizeChanged
04d09ba3a62e423f871626c2be5a51544ddc4799 5e066b49f313cb287086e2f3aea16f50dcdb0237
...@@ -20,6 +20,12 @@ ...@@ -20,6 +20,12 @@
</assemblyBinding> </assemblyBinding>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly> <dependentAssembly>
<assemblyIdentity name="Microsoft.Extensions.Configuration" publicKeyToken="adb9793829ddae60" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.2.0.0" newVersion="2.2.0.0" />
</dependentAssembly>
</assemblyBinding>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> <assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" /> <bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly> </dependentAssembly>
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
"DataHistoryModel": "server=castle.gimind.com;port=3306;user=palas;password=lapas;database=debit_quote;Character Set=utf8", "DataHistoryModel": "server=castle.gimind.com;port=3306;user=palas;password=lapas;database=debit_quote;Character Set=utf8",
"GIClientModel": "server=earth.gimind.com;port=3306;user=palas;password=lapas;database=gi_client_db", "GIClientModel": "server=earth.gimind.com;port=3306;user=palas;password=lapas;database=gi_client_db",
"iTraderModels": "server=mech.gimind.com;port=3306;user=palas;password=lapas;database=iTrader;Character Set=utf8", "iTraderModels": "server=mech.gimind.com;port=3306;user=palas;password=lapas;database=iTrader;Character Set=utf8",
"PalasEntityModel": "server=earth.gimind.com;port=3306;user=palas;password=lapas;database=Palas_V5;Character Set=utf8", "PalasEntityModel": "server=earth.gimind.com;port=3306;user=palas;password=lapas;database=Palas_V5;Character Set=utf8;Convert Zero Datetime=True;",
"PalasToolModels": "server=earth.gimind.com;port=3306;user=palas;password=lapas;database=Palas_tools;Character Set=utf8", "PalasToolModels": "server=earth.gimind.com;port=3306;user=palas;password=lapas;database=Palas_tools;Character Set=utf8",
"PalasV5Model": "server=earth.gimind.com;port=3306;user=palas;password=lapas;database=Palas_V5;Character Set=utf8;Convert Zero Datetime=True", "PalasV5Model": "server=earth.gimind.com;port=3306;user=palas;password=lapas;database=Palas_V5;Character Set=utf8;Convert Zero Datetime=True",
"QuantModels": "server=mech.gimind.com;port=3306;user=palas;password=lapas;database=quant;Character Set=utf8", "QuantModels": "server=mech.gimind.com;port=3306;user=palas;password=lapas;database=quant;Character Set=utf8",
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
"DataHistoryModel": "server=castle.gimind.com;port=3306;user=palas;password=lapas;database=debit_quote;Character Set=utf8", "DataHistoryModel": "server=castle.gimind.com;port=3306;user=palas;password=lapas;database=debit_quote;Character Set=utf8",
"GIClientModel": "server=earth.gimind.com;port=3306;user=palas;password=lapas;database=gi_client_db", "GIClientModel": "server=earth.gimind.com;port=3306;user=palas;password=lapas;database=gi_client_db",
"iTraderModels": "server=mech.gimind.com;port=3306;user=palas;password=lapas;database=iTrader;Character Set=utf8", "iTraderModels": "server=mech.gimind.com;port=3306;user=palas;password=lapas;database=iTrader;Character Set=utf8",
"PalasEntityModel": "server=earth.gimind.com;port=3306;user=palas;password=lapas;database=Palas_V5;Character Set=utf8", "PalasEntityModel": "server=earth.gimind.com;port=3306;user=palas;password=lapas;database=Palas_V5;Character Set=utf8;Convert Zero Datetime=True;",
"PalasToolModels": "server=earth.gimind.com;port=3306;user=palas;password=lapas;database=Palas_tools;Character Set=utf8", "PalasToolModels": "server=earth.gimind.com;port=3306;user=palas;password=lapas;database=Palas_tools;Character Set=utf8",
"PalasV5Model": "server=earth.gimind.com;port=3306;user=palas;password=lapas;database=Palas_V5;Character Set=utf8;Convert Zero Datetime=True", "PalasV5Model": "server=earth.gimind.com;port=3306;user=palas;password=lapas;database=Palas_V5;Character Set=utf8;Convert Zero Datetime=True",
"QuantModels": "server=mech.gimind.com;port=3306;user=palas;password=lapas;database=quant;Character Set=utf8", "QuantModels": "server=mech.gimind.com;port=3306;user=palas;password=lapas;database=quant;Character Set=utf8",
......
2e41c132fb42461739007e685dc7d9f4d172a249 e7fe85f558a5b3d9e39924b5b0c1eb43dd81846f
08ad95eab05dc161443b61c80eee0573add283ea 8b9f9a2fde07d017209b9cc3fef4cad22d363281
{ {
"version": 1, "version": 1,
"dgSpecHash": "ovb2V2YDxPhB+HP5K3Jhj+Io+CMuomc1nFpgLjgd9jN/YBv2mpSSqFV4XJFcr2XIklf+GoOFBbYR+w9pDBGzlg==", "dgSpecHash": "3qOagf7Mfw5w69TCL2IZwehg2xOn9t+ihm3MP8h5vD0aLGnyITBUVJ33RDH9yY4+H+Bb47j0xfiA9amZWmzbyA==",
"success": true "success": true
} }
\ No newline at end of file
...@@ -8,6 +8,6 @@ ...@@ -8,6 +8,6 @@
<Import Project="$(NuGetPackageRoot)microsoft.netcore.app\2.0.0\build\netcoreapp2.0\Microsoft.NETCore.App.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.netcore.app\2.0.0\build\netcoreapp2.0\Microsoft.NETCore.App.targets')" /> <Import Project="$(NuGetPackageRoot)microsoft.netcore.app\2.0.0\build\netcoreapp2.0\Microsoft.NETCore.App.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.netcore.app\2.0.0\build\netcoreapp2.0\Microsoft.NETCore.App.targets')" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition=" '$(TargetFramework)' == 'netstandard2.0' AND '$(ExcludeRestorePackageImports)' != 'true' "> <ImportGroup Condition=" '$(TargetFramework)' == 'netstandard2.0' AND '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="C:\Program Files\dotnet\sdk\NuGetFallbackFolder\netstandard.library\2.0.3\build\netstandard2.0\NETStandard.Library.targets" Condition="Exists('C:\Program Files\dotnet\sdk\NuGetFallbackFolder\netstandard.library\2.0.3\build\netstandard2.0\NETStandard.Library.targets')" /> <Import Project="$(NuGetPackageRoot)netstandard.library\2.0.3\build\netstandard2.0\NETStandard.Library.targets" Condition="Exists('$(NuGetPackageRoot)netstandard.library\2.0.3\build\netstandard2.0\NETStandard.Library.targets')" />
</ImportGroup> </ImportGroup>
</Project> </Project>
\ No newline at end of file
f37cf9ea1f1354cae1808f2e21b0b2e7c25de1c4 5d5fbdf547d1ca398b66b42f8fb2035f3451c269
ba5d00ca067d3da9d7717c42c572fe2303685f64 17451b1d51dabf0dcd54cbba1702b6591b087443
9daa1a392a050f1f5480363f84cb18bb41300edd caa8bde33db355c83d48df9a75543ea89f3cd92a
...@@ -11,6 +11,7 @@ D:\Tanta-master\OISCommon\obj\Debug\OISCommon.dll ...@@ -11,6 +11,7 @@ D:\Tanta-master\OISCommon\obj\Debug\OISCommon.dll
D:\Tanta-master\OISCommon\obj\Debug\OISCommon.pdb D:\Tanta-master\OISCommon\obj\Debug\OISCommon.pdb
D:\smallproject\28.GISports\OISCommon\bin\Debug\OISCommon.dll D:\smallproject\28.GISports\OISCommon\bin\Debug\OISCommon.dll
D:\smallproject\28.GISports\OISCommon\bin\Debug\OISCommon.pdb D:\smallproject\28.GISports\OISCommon\bin\Debug\OISCommon.pdb
D:\smallproject\28.GISports\OISCommon\obj\Debug\OISCommon.csprojAssemblyReference.cache
D:\smallproject\28.GISports\OISCommon\obj\Debug\OISCommon.ctlOISBase.resources D:\smallproject\28.GISports\OISCommon\obj\Debug\OISCommon.ctlOISBase.resources
D:\smallproject\28.GISports\OISCommon\obj\Debug\OISCommon.frmOISBase.resources D:\smallproject\28.GISports\OISCommon\obj\Debug\OISCommon.frmOISBase.resources
D:\smallproject\28.GISports\OISCommon\obj\Debug\OISCommon.frmOISLoggerException.resources D:\smallproject\28.GISports\OISCommon\obj\Debug\OISCommon.frmOISLoggerException.resources
...@@ -19,4 +20,3 @@ D:\smallproject\28.GISports\OISCommon\obj\Debug\OISCommon.csproj.GenerateResourc ...@@ -19,4 +20,3 @@ D:\smallproject\28.GISports\OISCommon\obj\Debug\OISCommon.csproj.GenerateResourc
D:\smallproject\28.GISports\OISCommon\obj\Debug\OISCommon.csproj.CoreCompileInputs.cache D:\smallproject\28.GISports\OISCommon\obj\Debug\OISCommon.csproj.CoreCompileInputs.cache
D:\smallproject\28.GISports\OISCommon\obj\Debug\OISCommon.dll D:\smallproject\28.GISports\OISCommon\obj\Debug\OISCommon.dll
D:\smallproject\28.GISports\OISCommon\obj\Debug\OISCommon.pdb D:\smallproject\28.GISports\OISCommon\obj\Debug\OISCommon.pdb
D:\smallproject\28.GISports\OISCommon\obj\Debug\OISCommon.csprojAssemblyReference.cache
5c5531ff56066e6cd884dc427442977f9bfcc540 29e64b3112779cbfc81f8fb982eaa58f0759e473
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment