fixed wps 外部多文档打开时导致panel隐藏的问题

This commit is contained in:
LittleBoy 2024-05-23 23:29:02 +08:00
parent 59776008d3
commit 0c1fd59146
26 changed files with 331 additions and 82 deletions

Binary file not shown.

View File

@ -13,20 +13,27 @@ Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
Test|Any CPU = Test|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{6CE536CB-6154-4FDF-9FFE-23A73B4E84AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6CE536CB-6154-4FDF-9FFE-23A73B4E84AB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6CE536CB-6154-4FDF-9FFE-23A73B4E84AB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6CE536CB-6154-4FDF-9FFE-23A73B4E84AB}.Release|Any CPU.Build.0 = Release|Any CPU
{6CE536CB-6154-4FDF-9FFE-23A73B4E84AB}.Test|Any CPU.ActiveCfg = Test|Any CPU
{6CE536CB-6154-4FDF-9FFE-23A73B4E84AB}.Test|Any CPU.Build.0 = Test|Any CPU
{455E23BE-F34F-4F6F-A9EA-381D66170B1B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{455E23BE-F34F-4F6F-A9EA-381D66170B1B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{455E23BE-F34F-4F6F-A9EA-381D66170B1B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{455E23BE-F34F-4F6F-A9EA-381D66170B1B}.Release|Any CPU.Build.0 = Release|Any CPU
{455E23BE-F34F-4F6F-A9EA-381D66170B1B}.Test|Any CPU.ActiveCfg = Test|Any CPU
{455E23BE-F34F-4F6F-A9EA-381D66170B1B}.Test|Any CPU.Build.0 = Test|Any CPU
{FF204E99-82F8-405E-847B-88FC6DF07715}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FF204E99-82F8-405E-847B-88FC6DF07715}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FF204E99-82F8-405E-847B-88FC6DF07715}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FF204E99-82F8-405E-847B-88FC6DF07715}.Release|Any CPU.Build.0 = Release|Any CPU
{FF204E99-82F8-405E-847B-88FC6DF07715}.Test|Any CPU.ActiveCfg = Test|Any CPU
{FF204E99-82F8-405E-847B-88FC6DF07715}.Test|Any CPU.Build.0 = Test|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View File

@ -316,6 +316,20 @@
<PropertyGroup>
<ManifestCertificateThumbprint>62DF6B414BD2608A130540A801F32D12E0199A99</ManifestCertificateThumbprint>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Test|AnyCPU'">
<OutputPath>bin\Test\</OutputPath>
<DefineConstants>VSTO40;TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>AnyCPU</PlatformTarget>
<LangVersion>7.3</LangVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Test|Win32'">
<OutputPath>bin\Win32\Test\</OutputPath>
<DefineConstants>VSTO40</DefineConstants>
<PlatformTarget>AnyCPU</PlatformTarget>
<LangVersion>7.3</LangVersion>
</PropertyGroup>
<!-- Include the build rules for a C# project. -->
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- Include additional build rules for an Office application add-in. -->

View File

@ -8,6 +8,6 @@
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
<StartAction>Project</StartAction>
<StartProgram>C:\Soft\Kingsoft\WPS Office\12.1.0.16910\office6\wps.exe</StartProgram>
<StartProgram>C:\Soft\Kingsoft\WPS Office\12.1.0.16929\office6\wps.exe</StartProgram>
</PropertyGroup>
</Project>

View File

@ -104,11 +104,13 @@ namespace AIProofread
public void ShowCurrentPane()
{
Globals.ThisAddIn.currentDocumentTaskPane.Visible = true;
Globals.ThisAddIn.ShowPanel();
//Globals.ThisAddIn.currentDocumentTaskPane.Visible = true;
}
public void HideCurrentPane()
{
Globals.ThisAddIn.currentDocumentTaskPane.Visible = false;
Globals.ThisAddIn.HidePanel();
//Globals.ThisAddIn.currentDocumentTaskPane.Visible = false;
}
public void Logout(string action)
@ -224,7 +226,8 @@ namespace AIProofread
{
if (item.mark != null)
{
if(item.content.tag == "i" && item.content.isAccept == AcceptStatus.Default) {
if (item.content.tag == "i" && item.content.isAccept == AcceptStatus.Default)
{
item.mark.Text = "";
}
item.ResetMarkStyle();
@ -232,9 +235,10 @@ namespace AIProofread
}
marks.Clear();
DocumentUtil.ClearProofreadMarks();
}catch (Exception ex)
}
catch (Exception ex)
{
Logger.Log("ClearAllProofreadMark",ex);
Logger.Log("ClearAllProofreadMark", ex);
}
}
@ -434,6 +438,7 @@ namespace AIProofread
//var app = Globals.ThisAddIn.Application;
//var cur = app.Selection;
//
int aIndex = 0;
foreach (var correct in list)
{
//cur.TypeText(correct.Insert);
@ -446,11 +451,20 @@ namespace AIProofread
// return it.start + correct.Insert_len;
//}).ToList();
int index = 0;
if (aIndex++ > 20)
{
Console.WriteLine(aIndex);
}
foreach (var item in correct.Diffs)
{
if(item.id == 109288)
{
Console.WriteLine("xxx");
}
var mark = AddBookmark(item, index, correct.Sentence_offset, correct.Insert_len, correct.Paragraph_offset);
if (item.tag != "i") index++;
if (mark != null) {
if (mark != null)
{
marks.Add(item.id, new ProofreadItem(item, mark));
}
}
@ -458,7 +472,7 @@ namespace AIProofread
}
foreach (var item in marks)
{
if(item.Value.mark != null)
if (item.Value.mark != null)
{
if (item.Value.content.tag == "i")
{
@ -472,7 +486,7 @@ namespace AIProofread
}
}
}
public string GetParagraph(int index)
{
@ -496,32 +510,13 @@ namespace AIProofread
}
}
public Microsoft.Office.Tools.Word.Bookmark AddBookmark(CorrectedContent item, int findIndex, int offset, int length,int paragraphIndex)
public Microsoft.Office.Tools.Word.Bookmark AddBookmark(CorrectedContent item, int findIndex, int offset, int length, int paragraphIndex)
{
Microsoft.Office.Tools.Word.Bookmark bookmark = null;
try
{
var document = Globals.ThisAddIn.Application.ActiveDocument;
ControlCollection controls = Globals.Factory.GetVstoObject(document).Controls;
// 判断并获取当前段落
if (paragraphIndex > document.Paragraphs.Count) return null;
var paragraph = document.Paragraphs[paragraphIndex];
var paragraphStart = paragraph.Range.Start;
var Start = paragraphStart + offset;
var End = Start + length - 1;
if(End > paragraph.Range.End)
{
End = paragraph.Range.End;
}
// 当前句子的选区
var fullRange = document.Range(Start, End);
string fullText = fullRange.Text;
Start = paragraphStart + offset + item.start;
End = paragraphStart + offset + item.end;
// 定位要操作的文字
var r = document.Range(Start, End);
var markName = Config.BuildBookmarkName(item.id);
// 判断是否已经存在
@ -529,28 +524,77 @@ namespace AIProofread
{
controls.Remove(markName);
}
// 判断选区是否正确
if (item.tag == "i" || r.Text == item.origin)
Range findRange = null;
if (paragraphIndex > document.Paragraphs.Count) return null;
var paragraph = document.Paragraphs[paragraphIndex];
var paragraphStart = paragraph.Range.Start;
offset += paragraphStart;
var Start = offset;
var End = Start + length - 1;
if (End > paragraph.Range.End)
{
bookmark = controls.AddBookmark(r, markName);
End = paragraph.Range.End;
}
// 当前句子的选区
var fullRange = document.Range(Start, End);
string fullText = fullRange.Text ?? paragraph.Range.Text;
Start = offset + item.start;
End = offset + item.end;
// 如果是新增 只能使用接口数据
findRange = document.Range(Start, End);
if (item.tag != "i" && findRange.Text != item.origin)
{
findRange = DocumentUtil.FindRange(paragraphIndex, item.origin, item.start, item.end);
}
if (findRange != null)
{
bookmark = controls.AddBookmark(findRange, markName);
bookmark.Tag = "ai_proofread";
}
else
{
int startPos = 0, index, findCount = 0;
while ((index = fullText.IndexOf(item.origin, startPos)) != -1)
{
if (findCount == findIndex)
{
r = document.Range(offset + index, offset + index + item.origin.Length);
bookmark = controls.AddBookmark(r, markName);
bookmark.Tag = "ai_proofread";
break;
}
startPos = index;
findCount++;
}
}
#region start
//// 判断并获取当前段落
//// 定位要操作的文字
//var r = document.Range(Start, End);
//// 判断选区是否正确
//if (item.tag == "i" || r.Text == item.origin)
//{
// bookmark = controls.AddBookmark(r, markName);
// bookmark.Tag = "ai_proofread";
//}
//else
//{
// object str = item.origin;
// FindRange(ref fullRange, ref str);
// if(fullRange != null){
// bookmark = controls.AddBookmark(fullRange, markName);
// bookmark.Tag = "ai_proofread";
// }
// //int startPos = 0, index, findCount = 0;
// //while ((index = fullText.IndexOf(item.origin, startPos)) != -1)
// //{
// // if (findCount == findIndex)
// // {
// // r = document.Range(offset + index, offset + index + item.origin.Length);
// // if(r.Text == item.origin) { }
// // bookmark = controls.AddBookmark(r, markName);
// // bookmark.Tagetg = "ai_proofread";
// // break;
// // }
// // startPos = index;
// // findCount++;
// //}
//}
#endregion
}
catch (Exception ex)
@ -560,5 +604,15 @@ namespace AIProofread
return bookmark;
}
private void FindRange(ref Range range,ref object whatToFind)
{
object matchCase = false; // 是否区分大小写
object matchWholeWord = false; // 是否匹配整个单词
object matchWildcards = false; // 是否使用通配符
object forward = true; // 搜索方向true表示向前搜索false表示向后搜索
object wrap = Microsoft.Office.Interop.Word.WdFindWrap.wdFindContinue; // 搜索范围,这里表示继续搜索
range.Find.Execute(ref whatToFind, ref matchCase, ref matchWholeWord, ref matchWildcards, ref forward, ref wrap);
}
}
}

View File

@ -6,7 +6,7 @@ namespace AIProofread
public class Config
{
public static readonly string APP_NAME = "AI校对王";
public static readonly string APP_VERSION = "1.0.0";
public static readonly string APP_VERSION = "1.0.4";
public static bool IS_WPS = false;
#if DEBUG
/// <summary>

View File

@ -22,9 +22,9 @@ namespace AIProofread
Directory.CreateDirectory(Config.APP_LOG_PATH);
}
StreamWriter streamWriter = File.AppendText(path);
streamWriter.WriteLine("***************************[" + (Config.IS_WPS ? "WPS" : "WORD") + "]***************************");
streamWriter.WriteLine("消息:" + msg);
streamWriter.WriteLine("时间:" + DateTime.Now.ToString("yyyy - MM - dd HH: mm:ss"));
streamWriter.WriteLine("***************************[" + (Config.IS_WPS?"WPS":"WORD")+ "]***************************");
streamWriter.WriteLine();
streamWriter.Flush();
streamWriter.Close();

View File

@ -51,6 +51,7 @@ namespace AIProofread
this.grpDebug = this.Factory.CreateRibbonGroup();
this.btnShowPane = this.Factory.CreateRibbonButton();
this.btnHidePane = this.Factory.CreateRibbonButton();
this.btnTestLocation = this.Factory.CreateRibbonButton();
this.tabAIProofread.SuspendLayout();
this.group1.SuspendLayout();
this.grpDebug.SuspendLayout();
@ -167,6 +168,7 @@ namespace AIProofread
//
this.grpDebug.Items.Add(this.btnShowPane);
this.grpDebug.Items.Add(this.btnHidePane);
this.grpDebug.Items.Add(this.btnTestLocation);
this.grpDebug.Label = "开发调试";
this.grpDebug.Name = "grpDebug";
this.grpDebug.Visible = false;
@ -183,6 +185,12 @@ namespace AIProofread
this.btnHidePane.Name = "btnHidePane";
this.btnHidePane.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.btnHidePane_Click);
//
// btnTestLocation
//
this.btnTestLocation.Label = "文本位置";
this.btnTestLocation.Name = "btnTestLocation";
this.btnTestLocation.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.btnTestLocation_Click);
//
// Ribbon1
//
this.Name = "Ribbon1";
@ -216,6 +224,7 @@ namespace AIProofread
internal Microsoft.Office.Tools.Ribbon.RibbonGroup grpDebug;
internal Microsoft.Office.Tools.Ribbon.RibbonButton btnShowPane;
internal Microsoft.Office.Tools.Ribbon.RibbonButton btnHidePane;
internal Microsoft.Office.Tools.Ribbon.RibbonButton btnTestLocation;
}
partial class ThisRibbonCollection

View File

@ -4,6 +4,8 @@ using System.Diagnostics;
using AIProofread.Controls;
using UtilLib;
using System.Drawing;
using System.Security.Cryptography;
using Microsoft.Office.Interop.Word;
namespace AIProofread
{
@ -17,7 +19,7 @@ namespace AIProofread
//btnLogout.Label = "退出\n登录";
Globals.ThisAddIn.ribbon = this;
if(Config.RUN_IN_DEBUG)
if (Config.RUN_IN_DEBUG)
{
grpDebug.Visible = true;
}
@ -129,5 +131,26 @@ namespace AIProofread
{
Globals.ThisAddIn.HidePanel();
}
void TestStr(int p, string str)
{
var doc = Globals.ThisAddIn.Application.ActiveDocument;
var p1 = doc.Paragraphs[p];
var text = p1.Range.Text;
var index = text.IndexOf(str);
var r = DocumentUtil.FindRange(p, str, index, index + str.Length);
System.Windows.Forms.MessageBox.Show("段落:" + p + str + ":" + index + (r == null ? "" : r.Text));
//var findRange = FindRange(p, findIndex, str, index, index + str.Length);
}
private void btnTestLocation_Click(object sender, RibbonControlEventArgs e)
{
TestStr(2, "销");
TestStr(3, "针");
TestStr(22, "疏");
}
}
}

View File

@ -43,29 +43,15 @@ namespace AIProofread
public List<FormLogin> LoginFormList = new List<FormLogin>();
public Dictionary<Word.Document, CustomTaskPane> taskPanels = new Dictionary<Word.Document, CustomTaskPane>();
public Dictionary<Word.Document, bool> panelsVisible = new Dictionary<Word.Document, bool>();
public Dictionary<Word.Document, bool> panelsVisibleStatus = new Dictionary<Word.Document, bool>();
public CustomTaskPane currentDocumentTaskPane;
private static readonly Dictionary<Word.Document, Dictionary<int, ProofreadItem>> allMarks = new Dictionary<Word.Document, Dictionary<int, ProofreadItem>>();
private void Application_WindowDeactivate(Word.Document doc, Window Wn)
{
Logger.Log("Application_WindowDeactivate -- " + doc.FullName);
Logger.Log("Application_WindowDeactivate -- " + doc.FullName + " visible:" + currentDocumentTaskPane.Visible);
//HidePanel(Doc);
if (taskPanels.ContainsKey(doc))
{
var visible = taskPanels[doc].Visible;
// 记录当前文档的显示状态
if (!panelsVisible.ContainsKey(doc))
{
panelsVisible.Add(doc, visible);
}
else
{
panelsVisible[doc] = visible;
}
}
}
private void Application_WindowActivate(Word.Document activeDoc, Window Wn)
@ -77,17 +63,19 @@ namespace AIProofread
}
Logger.Log("Application_WindowActivate -- " + activeDoc.FullName);
//ShowPanel(Doc);
// 创建面板
if (!taskPanels.ContainsKey(activeDoc))
{
ShowPanel(activeDoc, false);
panelsVisibleStatus.Add(activeDoc, false);
}
// 设置当前面板为新创建的面板
this.currentDocumentTaskPane = taskPanels[activeDoc];
if (IsWPS)
{
HideOtherPanel(activeDoc);
}
if (panelsVisible.ContainsKey(activeDoc) && panelsVisible[activeDoc])
if (panelsVisibleStatus.ContainsKey(activeDoc) && panelsVisibleStatus[activeDoc])
{
taskPanels[activeDoc].Visible = true;
}
@ -128,6 +116,10 @@ namespace AIProofread
}
void DisposePanel(Word.Document doc)
{
if (panelsVisibleStatus.ContainsKey(doc))
{
panelsVisibleStatus.Remove(doc);
}
if (taskPanels.ContainsKey(doc))
{
taskPanels[doc].Visible = false;
@ -142,9 +134,14 @@ namespace AIProofread
{
return;
}
// 隐藏其他的文档
foreach (var key in taskPanels.Keys)
{
taskPanels[key].Visible = false;
// 记录面板原始状态
if (key != doc)
{
taskPanels[key].Visible = false;
}
}
}
@ -336,12 +333,20 @@ namespace AIProofread
public void ShowPanel()
{
this.currentDocumentTaskPane.Visible = true;
if (panelsVisibleStatus.ContainsKey(Application.ActiveDocument))
{
panelsVisibleStatus[Application.ActiveDocument] = true;
}
}
// 隐藏面板
public void HidePanel()
{
this.currentDocumentTaskPane.Visible = false;
if (panelsVisibleStatus.ContainsKey(Application.ActiveDocument))
{
panelsVisibleStatus[Application.ActiveDocument] = false;
}
}
/// <summary>

View File

@ -8,6 +8,7 @@ using Bookmark = Microsoft.Office.Tools.Word.Bookmark;
using System.Collections.Generic;
using Microsoft.Office.Tools.Word;
using System;
using System.Xml.Linq;
namespace AIProofread
{
@ -85,8 +86,9 @@ namespace AIProofread
public static void ClearProofreadMarks()
{
var bookmarks = Globals.ThisAddIn.Application.ActiveDocument.Bookmarks;
ControlCollection controls = Globals.Factory.GetVstoObject(Globals.ThisAddIn.Application.ActiveDocument).Controls;
var document = Globals.ThisAddIn.Application.ActiveDocument;
var bookmarks = document.Bookmarks;
ControlCollection controls = Globals.Factory.GetVstoObject(document).Controls;
foreach (Microsoft.Office.Interop.Word.Bookmark mark in bookmarks)
{
if (Config.IsProofreadMark(mark.Name))
@ -94,18 +96,15 @@ namespace AIProofread
// 去除高亮
mark.Range.Shading.BackgroundPatternColor = WdColor.wdColorAutomatic;
// 去除下划线
mark.Range.Underline = WdUnderline.wdUnderlineNone;
//mark.Delete();
}
try
{
if (controls.Contains(mark))
//mark.Range.Underline = WdUnderline.wdUnderlineNone;
try
{
controls.Remove(mark);
mark.Delete();
}
catch (Exception e)
{
Logger.Log("remove mark", e);
}
}catch(Exception e)
{
Logger.Log("remove mark",e);
}
}
@ -159,5 +158,126 @@ namespace AIProofread
}
return list;
}
/// <summary>
/// 查找对应段落的range
/// </summary>
/// <param name="paragraphsIndex">段落index从第1开始计数</param>
/// <param name="findText">要查找字符串</param>
/// <param name="wordStart">字符串原始起始位置</param>
/// <param name="wordEnd">字符串原始结束位置</param>
/// <returns></returns>
public static Range FindRange(int paragraphsIndex, string findText, int wordStart, int wordEnd)
{
// <param name="findIndex"></param> 暂时接口无法支持
var document = Globals.ThisAddIn.Application.ActiveDocument;
if (paragraphsIndex > document.Paragraphs.Count) return null;
var paragraph = document.Paragraphs[paragraphsIndex];
try
{
//int num = 0;
int num3 = 0;
// 段落开始和结束
object Start = paragraph.Range.Start;
object End = paragraph.Range.End;
// 段落选区
Range range = document.Range(ref Start, ref End);
var activeDocument = document;
// 查找对象位置
End = range.Start + wordStart;
Start = range.Start + wordEnd;
// 直接找到
var findRange = activeDocument.Range(ref End, ref Start);
// 判断对应选区是否是要找的文本
if (findRange.Text == findText)
{
return findRange;
}
else
{
// 查找
range.Find.MatchByte = true;
// 使用选区查找功能
Find find = range.Find;
// 节约变量
End = findText;
Start = true;
object MatchWholeWord = Type.Missing;
object MatchWildcards = Type.Missing;
object MatchSoundsLike = Type.Missing;
object MatchAllWordForms = Type.Missing;
object Forward = Type.Missing;
object Wrap = Type.Missing;
object Format = Type.Missing;
object ReplaceWith = Type.Missing;
object Replace = Type.Missing;
object MatchKashida = Type.Missing;
object MatchDiacritics = Type.Missing;
object MatchAlefHamza = Type.Missing;
object MatchControl = Type.Missing;
// 没有找到则执行查询
find.Execute(
ref End, ref Start, ref MatchWholeWord,
ref MatchWildcards, ref MatchSoundsLike,
ref MatchAllWordForms, ref Forward, ref Wrap,
ref Format, ref ReplaceWith, ref Replace,
ref MatchKashida, ref MatchDiacritics,
ref MatchAlefHamza, ref MatchControl
);
while (range.Find.Found)
{
var obj4 = range.Document;
MatchControl = range.Start;
MatchAlefHamza = range.End;
var range2 = obj4.Range(ref MatchControl, ref MatchAlefHamza);
num3 = range2.End;
if (range2.Text == findText)
{
return range2;
}
break;
//if (findIndex == num)
//{
//}
//num++;
//range.Find.MatchByte = true;
//Find find2 = range.Find;
//MatchAlefHamza = missword;
//MatchControl = true;
//MatchDiacritics = Type.Missing;
//MatchKashida = Type.Missing;
//Replace = Type.Missing;
//ReplaceWith = Type.Missing;
//Format = Type.Missing;
//Wrap = Type.Missing;
//Forward = Type.Missing;
//MatchAllWordForms = Type.Missing;
//MatchSoundsLike = Type.Missing;
//MatchWildcards = Type.Missing;
//MatchWholeWord = Type.Missing;
//Start = Type.Missing;
//End = Type.Missing;
//// 再次重复查找
//find2.Execute(ref MatchAlefHamza, ref MatchControl, ref MatchDiacritics, ref MatchKashida, ref Replace, ref ReplaceWith, ref Format, ref Wrap, ref Forward, ref MatchAllWordForms, ref MatchSoundsLike, ref MatchWildcards, ref MatchWholeWord, ref Start, ref End);
}
if (num3 == 0)
{
return null;
}
}
}
catch (Exception)
{
}
return null;
}
}
}

View File

@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.6.2", FrameworkDisplayName = ".NET Framework 4.6.2")]

View File

View File

@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.6.2", FrameworkDisplayName = ".NET Framework 4.6.2")]

View File

@ -30,6 +30,15 @@
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Test|AnyCPU'">
<OutputPath>bin\Test\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>AnyCPU</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />