소스 검색

处理重复评教数据程序,改为多线程,带进度条提示

新疆影视学院高职
坤 梁 2 년 전
부모
커밋
9c6ab3f22a
9개의 변경된 파일520개의 추가작업 그리고 30개의 파일을 삭제
  1. +1
    -1
      Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/EvaluationTeach/Controllers/Eval_MainController.cs
  2. +56
    -2
      Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EvaluationTeach/Eval_Main/Eval_MainBLL.cs
  3. +8
    -4
      Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EvaluationTeach/Eval_Main/Eval_MainIBLL.cs
  4. +46
    -21
      Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EvaluationTeach/Eval_Main/Eval_MainService.cs
  5. +13
    -2
      Learun.Framework.Ultimate V7/Quanjiang.Application.Tools/Form1.cs
  6. +98
    -0
      Learun.Framework.Ultimate V7/Quanjiang.Application.Tools/FormProgress.Designer.cs
  7. +165
    -0
      Learun.Framework.Ultimate V7/Quanjiang.Application.Tools/FormProgress.cs
  8. +120
    -0
      Learun.Framework.Ultimate V7/Quanjiang.Application.Tools/FormProgress.resx
  9. +13
    -0
      Learun.Framework.Ultimate V7/Quanjiang.Application.Tools/Quanjiang.DigitalScholl.Tools.csproj

+ 1
- 1
Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/EvaluationTeach/Controllers/Eval_MainController.cs 파일 보기

@@ -241,7 +241,7 @@ namespace Learun.Application.Web.Areas.EvaluationTeach.Controllers
[AjaxOnly]
public ActionResult CleanForm(string VID)
{
ask_MainIBLL.Clean(VID);
//ask_MainIBLL.Clean(VID);
return Success("操作成功!");
}



+ 56
- 2
Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EvaluationTeach/Eval_Main/Eval_MainBLL.cs 파일 보기

@@ -305,11 +305,65 @@ namespace Learun.Application.TwoDevelopment.EvaluationTeach
}
}

public void Clean(string vid)
public List<Eval_QuestionResultEntity> GetAllNeedClean(string vid)
{
try
{
ask_MainService.Clean(vid);
return ask_MainService.GetAllNeedClean(vid);
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowBusinessException(ex);
}
}
}
public List<Eval_QuestionEntity> GetAllQuestion(string vid)
{
try
{
return ask_MainService.GetAllQuestion(vid);
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowBusinessException(ex);
}
}
}
public List<Eval_QuestionResultEntity> GetMuiltyResults(string vid, string LessonNo, string EmpNo, string StuNo, string QID)
{
try
{
return ask_MainService.GetMuiltyResults(vid,LessonNo,EmpNo,StuNo,QID);
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowBusinessException(ex);
}
}
}
public void DeleteQestionResult(string RID)
{
try
{
ask_MainService.DeleteQestionResult(RID);
}
catch (Exception ex)
{


+ 8
- 4
Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EvaluationTeach/Eval_Main/Eval_MainIBLL.cs 파일 보기

@@ -30,7 +30,7 @@ namespace Learun.Application.TwoDevelopment.EvaluationTeach
Eval_MainEntity GetEval_MainEntity(string keyValue);

Eval_MainEntity GetEval_MainEntityAndQuestions(string keyValue);
Eval_MainEntity GetEval_MainEntityAndQuestionsResult(string keyValue, string stuno,string EmpNo,string LessonNo);
Eval_MainEntity GetEval_MainEntityAndQuestionsResult(string keyValue, string stuno, string EmpNo, string LessonNo);
#endregion

#region 提交数据
@@ -54,8 +54,8 @@ namespace Learun.Application.TwoDevelopment.EvaluationTeach
void SaveEval_QuestionResultEntity(List<Eval_QuestionResultEntity> entity, string vid, string LessonNo, string EmpNo, string userinfoUserId,
string userinfoRealName, string userinfoIPAddress);

IEnumerable<Eval_QuestionResultEntity> GetAnswerPageList(Pagination paginationobj, string queryJson);
IEnumerable<Eval_QuestionResultEntity> GetTeacherIndexPageList(Pagination paginationobj, string queryJson);
IEnumerable<Eval_QuestionResultEntity> GetAnswerPageList(Pagination paginationobj, string queryJson);
IEnumerable<Eval_QuestionResultEntity> GetTeacherIndexPageList(Pagination paginationobj, string queryJson);
/// <summary>
/// 评教:按教师、课程统计上课人数、评教人数、评教平均分
/// </summary>
@@ -75,6 +75,10 @@ namespace Learun.Application.TwoDevelopment.EvaluationTeach
IEnumerable<Eval_QuestionResultEntity> GetQuestionResultCount(string keyValue, string stuno, string EmpNo,
string LessonNo);

void Clean(string vid);
List<Eval_QuestionResultEntity> GetAllNeedClean(string vid);
List<Eval_QuestionEntity> GetAllQuestion(string vid);

List<Eval_QuestionResultEntity> GetMuiltyResults(string vid, string LessonNo, string EmpNo, string StuNo,string QID);
void DeleteQestionResult(string RID);
}
}

+ 46
- 21
Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EvaluationTeach/Eval_Main/Eval_MainService.cs 파일 보기

@@ -600,7 +600,7 @@ where 1=1 ");
}
}

public void Clean(string vid)
public List<Eval_QuestionResultEntity> GetAllNeedClean(string vid)
{
try
{
@@ -611,9 +611,9 @@ select aa.LessonNo,aa.EmpNo,aa.VID,aa.StuNo,bb.IScore,bb.UID,cc.EmpName,aa.Lesso
from
(
select a.LessonNo,a.LessonName,a.EmpNo,a.AcademicYearNo,a.Semester,b.VID,a.StuNo
from "+ misdbname + @".dbo.StuSelectLessonList a
from " + misdbname + @".dbo.StuSelectLessonList a
left join Eval_Main b on a.AcademicYearNo=b.AcademicYearNo and a.Semester=b.Semester
where b.Status=1 and b.VID='"+ vid + @"'
where b.Status=1 and b.VID='" + vid + @"'
and a.StuNo is not null and a.StuNo <> ''
and a.StuNo not in (select StuNo from " + misdbname + @".dbo.StuInfoBasic where ChangeStatus=1)
) aa
@@ -623,7 +623,7 @@ select sum(b.IScore) as IScore, a.EmpNo, a.LessonNo, a.UID
from Eval_QuestionResult a
left join Eval_QuestionItems b on a.IID = b.IID
left join Eval_Question c on a.QID=c.QID
where c.VID='"+ vid + @"'
where c.VID='" + vid + @"'
and a.EmpNo is not null and a.EmpNo <> '' and a.LessonNo is not null and a.LessonNo <> '' and a.UID is not null and a.UID <> ''
group by a.EmpNo, a.LessonNo, a.UID
) bb
@@ -631,24 +631,20 @@ on aa.EmpNo=bb.EmpNo and aa.LessonNo=bb.LessonNo and aa.StuNo=bb.UID
left join " + misdbname + @".dbo.EmpInfo cc on aa.EmpNo=cc.EmpNo
left join " + misdbname + @".dbo.StuInfoBasic ee on aa.StuNo = ee.StuNo
where 1=1 and iscore>100 order by IScore desc";
var list= this.BaseRepository().FindList<Eval_QuestionResultEntity>(sql);
var questionlist = this.BaseRepository().FindList<Eval_QuestionEntity>("select * from Eval_Question where vid='" + vid + "'");
string sql2 = @"select b.* from Eval_Question a left join Eval_QuestionResult b on a.QID=b.QID
where a.vid='" + vid + "' ";
List<Eval_QuestionResultEntity> Eval_QuestionResultlist = this.BaseRepository().FindList<Eval_QuestionResultEntity>(sql2).ToList();
foreach (var item in list)
{
foreach (var questionEntity in questionlist)
{
return BaseRepository().FindList<Eval_QuestionResultEntity>(sql).ToList();
}
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
}

var needfindlist= Eval_QuestionResultlist.Where(m=>m.LessonNo==item.LessonNo&&m.EmpNo==item.EmpNo&&m.QID==questionEntity.QID).ToList();
for (int i = 0; i < needfindlist.Count()-1; i++)
{
string rid = needfindlist[i].RID;
BaseRepository().Delete<Eval_QuestionResultEntity>(t=>t.RID== rid);
}
}
}
public List<Eval_QuestionEntity> GetAllQuestion(string vid)
{
try
{
return BaseRepository().FindList<Eval_QuestionEntity>("select * from Eval_Question where vid='" + vid + "'").ToList();
}
catch (Exception e)
{
@@ -656,5 +652,34 @@ where a.vid='" + vid + "' ";
throw;
}
}

public List<Eval_QuestionResultEntity> GetMuiltyResults(string vid,string LessonNo,string EmpNo,string StuNo,string QID)
{
try
{
string sql = "select b.* from Eval_Question a left join Eval_QuestionResult b on a.QID=b.QID where a.vid = '" + vid + "' and b.LessonNo='"+ LessonNo + "' and b.EmpNo='"+EmpNo+"' and b.uid='"+ StuNo + "' and b.QID='"+QID+"'";
return BaseRepository().FindList<Eval_QuestionResultEntity>(sql).ToList();
}
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
}

public void DeleteQestionResult(string RID)
{
try
{
BaseRepository().Delete<Eval_QuestionResultEntity>(t => t.RID == RID);
}
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
}

}
}

+ 13
- 2
Learun.Framework.Ultimate V7/Quanjiang.Application.Tools/Form1.cs 파일 보기

@@ -5,6 +5,7 @@ using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using Learun.Application.TwoDevelopment.EvaluationTeach;
@@ -17,11 +18,21 @@ namespace Quanjiang.DigitalScholl.Tools
{
InitializeComponent();
}
private Eval_MainIBLL ask_MainIBLL = new Eval_MainBLL();

Thread mainthread = null;
private void button1_Click(object sender, EventArgs e)
{
ask_MainIBLL.Clean("9d2191c4-a709-4a0f-b49b-7ad46667d4e9");
ThreadStart threadstart = new ThreadStart(TransferCoreData);
mainthread = new Thread(threadstart);
mainthread.Name = "main";
mainthread.Start();
//ask_MainIBLL.Clean("9d2191c4-a709-4a0f-b49b-7ad46667d4e9");
}

public void TransferCoreData()
{
FormProgress progress = new FormProgress();
progress.ShowDialog();
}
}
}

+ 98
- 0
Learun.Framework.Ultimate V7/Quanjiang.Application.Tools/FormProgress.Designer.cs 파일 보기

@@ -0,0 +1,98 @@
namespace Quanjiang.DigitalScholl.Tools
{
partial class FormProgress
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;

/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}

#region Windows Form Designer generated code

/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.progressBar1 = new System.Windows.Forms.ProgressBar();
this.rtblog = new System.Windows.Forms.RichTextBox();
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
this.splitContainer1.SuspendLayout();
this.SuspendLayout();
//
// progressBar1
//
this.progressBar1.Dock = System.Windows.Forms.DockStyle.Fill;
this.progressBar1.Location = new System.Drawing.Point(0, 0);
this.progressBar1.Name = "progressBar1";
this.progressBar1.Size = new System.Drawing.Size(800, 109);
this.progressBar1.TabIndex = 0;
//
// rtblog
//
this.rtblog.Dock = System.Windows.Forms.DockStyle.Fill;
this.rtblog.Location = new System.Drawing.Point(0, 0);
this.rtblog.Name = "rtblog";
this.rtblog.Size = new System.Drawing.Size(800, 337);
this.rtblog.TabIndex = 1;
this.rtblog.Text = "";
//
// splitContainer1
//
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer1.Location = new System.Drawing.Point(0, 0);
this.splitContainer1.Name = "splitContainer1";
this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal;
//
// splitContainer1.Panel1
//
this.splitContainer1.Panel1.Controls.Add(this.progressBar1);
//
// splitContainer1.Panel2
//
this.splitContainer1.Panel2.Controls.Add(this.rtblog);
this.splitContainer1.Size = new System.Drawing.Size(800, 450);
this.splitContainer1.SplitterDistance = 109;
this.splitContainer1.TabIndex = 2;
//
// FormProgress
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Controls.Add(this.splitContainer1);
this.Name = "FormProgress";
this.Text = "FormProgress";
this.Load += new System.EventHandler(this.FormProgress_Load);
this.splitContainer1.Panel1.ResumeLayout(false);
this.splitContainer1.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
this.splitContainer1.ResumeLayout(false);
this.ResumeLayout(false);

}

#endregion

private System.Windows.Forms.ProgressBar progressBar1;
private System.Windows.Forms.RichTextBox rtblog;
private System.Windows.Forms.SplitContainer splitContainer1;
}
}

+ 165
- 0
Learun.Framework.Ultimate V7/Quanjiang.Application.Tools/FormProgress.cs 파일 보기

@@ -0,0 +1,165 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using Learun.Application.TwoDevelopment.EvaluationTeach;

namespace Quanjiang.DigitalScholl.Tools
{
public partial class FormProgress : Form
{
private Eval_MainIBLL ask_MainIBLL = new Eval_MainBLL();

Thread thread = null;
int max = 0;
public FormProgress()
{
InitializeComponent();
}

private void FormProgress_Load(object sender, EventArgs e)
{
progressBar1.Minimum = 0;
progressBar1.Maximum = max;
progressBar1.Value = 0;
ThreadStart start = new ThreadStart(SyncCoreDB);
thread = new Thread(start);
thread.Start();
}

public void SyncCoreDB()
{
try
{
SetValueProgressBar(SetValue, 0);
string vid = "9d2191c4-a709-4a0f-b49b-7ad46667d4e9";
//获取超过100分的数据
AppendTextValue("获取超过100分的数据,请耐心等待...\r\n");
var list = ask_MainIBLL.GetAllNeedClean(vid);
AppendTextValue("获取超过100分的数据,共"+list.Count+"条,完毕.\r\n");
SetProgressMax(list.Count);
//获取vid下问题
AppendTextValue("获取vid下问题,请耐心等待...\r\n");
var questionlist = ask_MainIBLL.GetAllQuestion(vid);
AppendTextValue("获取vid下问题,完毕.\r\n");
//开始循环超100数据
foreach (var item in list)
{
SetValueProgressBar(SetValue, GetProgressValue() + 1);
foreach (var questionEntity in questionlist)
{
//获取重复数据
AppendTextValue("获取LessonNo="+item.LessonNo + ",EmpNo=" + item.EmpNo + ",StuNo="+item.StuNo + ",QID="+questionEntity.QID+"的重复数据,请耐心等待...\r\n");
var muiltyresultlist = ask_MainIBLL.GetMuiltyResults(vid, item.LessonNo, item.EmpNo, item.StuNo,questionEntity.QID);
AppendTextValue("总计:"+ muiltyresultlist .Count+ "条,done.\r\n");
for (int i = 0; i < muiltyresultlist.Count() - 1; i++)
{
//循环删除
string rid = muiltyresultlist[i].RID;
ask_MainIBLL.DeleteQestionResult(rid);
AppendTextValue("删除第:" +i+ "条,done.\r\n");
}
}
}
CloseWindow();
}
catch (Exception e)
{
AppendTextValue("error:" + e.Message + "\r\n");
}
}

#region 委托

public delegate void AppendTextValueDelegate(string text);
public delegate void SetValueDelegate(int val);
public delegate void CloseWindowDelegate();
public delegate void SetWindowTitleDelegate(string text);
public delegate int GetProgressValueDelegate();
public delegate void SetProgressMaxDelegate(int max);
public void AppendTextValue(string text)
{
if (this.rtblog.InvokeRequired)
{
AppendTextValueDelegate callback = new AppendTextValueDelegate(AppendTextValue);
this.Invoke(callback, text);
}
else
{
rtblog.AppendText(text);

}
}
public void SetProgressMax(int max)
{
if (this.progressBar1.InvokeRequired)
{
SetProgressMaxDelegate callback = new SetProgressMaxDelegate(SetProgressMax);
this.Invoke(callback, max);
}
else
{
progressBar1.Maximum = max;
}
}
public int GetProgressValue()
{
if (this.progressBar1.InvokeRequired)
{
GetProgressValueDelegate callback = new GetProgressValueDelegate(GetProgressValue);
return Convert.ToInt32(this.Invoke(callback));
}
else
{
return progressBar1.Value;
}
}
public void SetWindowTitle(string text)
{
if (this.InvokeRequired)
{
SetWindowTitleDelegate callback = new SetWindowTitleDelegate(SetWindowTitle);
this.Invoke(callback, text);
}
else
{
this.Text = text;
}
}
public void CloseWindow()
{
if (this.InvokeRequired)
{
CloseWindowDelegate callback = new CloseWindowDelegate(CloseWindow);
this.Invoke(callback);
}
else
{
this.Close();
}

}
public void SetValue(int val)
{
progressBar1.Value = val;
}
public void SetValueProgressBar(SetValueDelegate myDelegate, int val)
{
if (this.progressBar1.InvokeRequired)
{
this.Invoke(myDelegate, val);
}
else
{
myDelegate(val);
}
}
#endregion
}
}

+ 120
- 0
Learun.Framework.Ultimate V7/Quanjiang.Application.Tools/FormProgress.resx 파일 보기

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.

mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

+ 13
- 0
Learun.Framework.Ultimate V7/Quanjiang.Application.Tools/Quanjiang.DigitalScholl.Tools.csproj 파일 보기

@@ -59,11 +59,20 @@
<Compile Include="Form1.Designer.cs">
<DependentUpon>Form1.cs</DependentUpon>
</Compile>
<Compile Include="FormProgress.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="FormProgress.Designer.cs">
<DependentUpon>FormProgress.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="Form1.resx">
<DependentUpon>Form1.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FormProgress.resx">
<DependentUpon>FormProgress.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
@@ -89,6 +98,10 @@
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Learun.Framework.Module\Learun.Application.Module\Learun.Application.Mapping\Learun.Application.Mapping.csproj">
<Project>{79f8e2f1-08e7-4336-93e0-512b39f9dd54}</Project>
<Name>Learun.Application.Mapping</Name>
</ProjectReference>
<ProjectReference Include="..\Learun.Framework.Module\Learun.Application.Module\Learun.Application.TwoDevelopment\Learun.Application.TwoDevelopment.csproj">
<Project>{56f9a112-fd96-4809-98f4-0d7c5de0711b}</Project>
<Name>Learun.Application.TwoDevelopment</Name>


불러오는 중...
취소
저장