Skip to content
This repository has been archived by the owner on Nov 3, 2023. It is now read-only.

Xml encoding fix #41

Open
wants to merge 6 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions gendarme/README.vsnet
Original file line number Diff line number Diff line change
Expand Up @@ -31,16 +31,18 @@ The minimal requirements are:

* Microsoft Visual Studio.NET 2010 [2];
* Some modules from github
* 'jbevain/cecil' to get both Mono.Cecil and Mono.Cecil.[M|P]db
* 'mono/mono-tools' for Gendarme latest sources
* 'jbevain/cecil/0.9.6-nuget' to get both Mono.Cecil and Mono.Cecil.[M|P]db
* 'secdec/mono-tools' for Gendarme latest sources


How To

* Check out the source code from GIT. This is:

git clone git://github.com/mono/mono-tools.git
git clone git://github.com/secdec/mono-tools.git
git clone git://github.com/jbevain/cecil.git
cd cecil
git checkout 0.9.6-nuget
(Please clone both modules at the same level in the folder
hierarchy because mono-tools references cecil as a relative path.)

Expand Down
68 changes: 68 additions & 0 deletions gendarme/Tests.Gendarme/Tests.Gendarme.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>
</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{980F078D-36E7-4C5B-9738-8A0156A3D938}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Tests.Gendarme</RootNamespace>
<AssemblyName>Tests.Gendarme</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
<Reference Include="System" />
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.XML" />
</ItemGroup>
<ItemGroup>
<CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
<Visible>False</Visible>
</CodeAnalysisDependentAssemblyPaths>
</ItemGroup>
<ItemGroup>
<Compile Include="XmlTextEncoderTest.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\console\gendarme.csproj">
<Project>{E95A3AB9-A303-4859-8BCA-458C79496548}</Project>
<Name>gendarme</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<WCFMetadata Include="Service References\" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
48 changes: 48 additions & 0 deletions gendarme/Tests.Gendarme/XmlTextEncoderTest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
//
// Unit Test for XmlTextEncoder
//
// Authors:
// Anthony DeMartini <[email protected]>
//
// (C) 2014 Applied Visions
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//

using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Gendarme;
using System.Xml;
namespace Tests.Gendarme
{
[TestClass]
public class XmlTextEncoderTest
{
[TestMethod]
public void TestEncode ()
{
var result = XmlResultWriter.XmlTextEncoder.Encode ("Found string: \"\\x1\\x1\\n.\\x1\\x2\\x4.\\x3\\x2\\x1.\\x1\\x2\\x3.\\x2\\x2\\x1.\\x1\\x2\\x2.\\x3\\x2\\x2.\\x1\\x2\\x2.\\x1\\x2\\x1.\\x1\\x2\\x16.\\x1\\x2\\xb.\\x1\\x2\\x2.\\x2\\x2\\x7.\\x1\\x2\\x1.\\x2\\x2\\x1.\\x5\\x2\\x10.\\x1\\x2\\x5.\\x2\\x2\\x5.\\x1\\x2\\x1.\\x1\\x2\\t.\\x1\\x2\\xc.\\x1\\x2\\xf.\\x1\\x2\\x1.\\x4\\x2\\x5.\\x1\\x2\\x1.\\x1\\x2\\x2.\\x1\\x2\\x3.\\x1\\x2\\x3.\\x2\\x2\\x1.\\x1\\x2\\x2.\\x1\\x2\\x16.\\x1\\x2\\n.\\x1\\x2\\x3.\\x1\\x2\\x2.\\x1\\x2\\x1.\\x1\\x2\\x1.\\x7\\x2&.\\x1\\x2\\x1.\\x5\\x2\\x7.\\x1\\x2\\x14.\\x1\\x2\\x2.\\x1\\x2\\x2.\\x2\\x2\\x1.\\x2\\x2\\x18.\\x1\\x2\\x15.\\x1\\x2\\x2.\\x2\\x2\".");
Assert.AreEqual ("Found string: &quot;\\x1\\x1\\n.\\x1\\x2\\x4.\\x3\\x2\\x1.\\x1\\x2\\x3.\\x2\\x2\\x1.\\x1\\x2\\x2.\\x3\\x2\\x2.\\x1\\x2\\x2.\\x1\\x2\\x1.\\x1\\x2\\x16.\\x1\\x2\\xb.\\x1\\x2\\x2.\\x2\\x2\\x7.\\x1\\x2\\x1.\\x2\\x2\\x1.\\x5\\x2\\x10.\\x1\\x2\\x5.\\x2\\x2\\x5.\\x1\\x2\\x1.\\x1\\x2\\t.\\x1\\x2\\xc.\\x1\\x2\\xf.\\x1\\x2\\x1.\\x4\\x2\\x5.\\x1\\x2\\x1.\\x1\\x2\\x2.\\x1\\x2\\x3.\\x1\\x2\\x3.\\x2\\x2\\x1.\\x1\\x2\\x2.\\x1\\x2\\x16.\\x1\\x2\\n.\\x1\\x2\\x3.\\x1\\x2\\x2.\\x1\\x2\\x1.\\x1\\x2\\x1.\\x7\\x2&amp;.\\x1\\x2\\x1.\\x5\\x2\\x7.\\x1\\x2\\x14.\\x1\\x2\\x2.\\x1\\x2\\x2.\\x2\\x2\\x1.\\x2\\x2\\x18.\\x1\\x2\\x15.\\x1\\x2\\x2.\\x2\\x2&quot;.", result);
}
}
}
105 changes: 104 additions & 1 deletion gendarme/console/XmlResultWriter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@

using Gendarme.Framework;
using Gendarme.Framework.Rocks;
using System.Collections.Generic;

namespace Gendarme {

Expand Down Expand Up @@ -181,7 +182,9 @@ void CreateElement (Defect defect)
writer.WriteAttributeString ("Confidence", defect.Confidence.ToString ());
writer.WriteAttributeString ("Location", defect.Location.ToString ());
writer.WriteAttributeString ("Source", defect.Source);
writer.WriteString (defect.Text);
//Built-in .net encoding for XML strings doesn't appear to handle all cases, so
//we need an alternative approach.
writer.WriteRaw (XmlTextEncoder.Encode (defect.Text));
writer.WriteEndElement ();
}

Expand All @@ -203,5 +206,105 @@ protected override void Dispose (bool disposing)
writer = null;
}
}

/// <summary>
/// Borrowed from mkropat's .NET-Snippets:
/// https://github.com/mkropat/.NET-Snippets/blob/master/XmlTextEncoder.cs
/// Encodes data so that it can be safely embedded as text in XML documents.
/// </summary>
public class XmlTextEncoder : TextReader
{
public static string Encode (string s)
{
using (var stream = new StringReader (s))
using (var encoder = new XmlTextEncoder (stream))
{
return encoder.ReadToEnd ();
}
}

/// <param name="source">The data to be encoded in UTF-16 format.</param>
/// <param name="filterIllegalChars">It is illegal to encode certain
/// characters in XML. If true, silently omit these characters from the
/// output; if false, throw an error when encountered.</param>
public XmlTextEncoder (TextReader source, bool filterIllegalChars = true)
{
_source = source;
_filterIllegalChars = filterIllegalChars;
}

readonly Queue<char> _buf = new Queue<char> ();
readonly bool _filterIllegalChars;
readonly TextReader _source;

public override int Peek ()
{
PopulateBuffer ();
if (_buf.Count == 0) return -1;
return _buf.Peek ();
}

public override int Read ()
{
PopulateBuffer ();
if (_buf.Count == 0) return -1;
return _buf.Dequeue ();
}

void PopulateBuffer ()
{
const int endSentinel = -1;
while (_buf.Count == 0 && _source.Peek () != endSentinel)
{
// Strings in .NET are assumed to be UTF-16 encoded [1].
var c = (char)_source.Read ();
if (Entities.ContainsKey (c))
{
// Encode all entities defined in the XML spec [2].
foreach (var i in Entities [c]) _buf.Enqueue (i);
}
else if (!(0x0 <= c && c <= 0x8) &&
!new[] { 0xB, 0xC }.Contains (c) &&
!(0xE <= c && c <= 0x1F) &&
!(0x7F <= c && c <= 0x84) &&
!(0x86 <= c && c <= 0x9F) &&
!(0xD800 <= c && c <= 0xDFFF) &&
!new[] { 0xFFFE, 0xFFFF }.Contains (c))
{
// Allow if the Unicode codepoint is legal in XML [3].
_buf.Enqueue (c);
}
else if (char.IsHighSurrogate (c) &&
_source.Peek () != endSentinel &&
char.IsLowSurrogate ((char)_source.Peek ()))
{
// Allow well-formed surrogate pairs [1].
_buf.Enqueue (c);
_buf.Enqueue ((char)_source.Read ());
}
else if (!_filterIllegalChars)
{
// Note that we cannot encode illegal characters as entity
// references due to the "Legal Character" constraint of
// XML [4]. Nor are they allowed in CDATA sections [5].
throw new ArgumentException (
String.Format ("Illegal character: '{0:X}'", (int)c));
}
}
}

static readonly Dictionary<char, string> Entities =
new Dictionary<char, string> {
{ '"', "&quot;" }, { '&', "&amp;"}, { '\'', "&apos;" },
{ '<', "&lt;" }, { '>', "&gt;" },
};

// References:
// [1] http://en.wikipedia.org/wiki/UTF-16/UCS-2
// [2] http://www.w3.org/TR/xml11/#sec-predefined-ent
// [3] http://www.w3.org/TR/xml11/#charsets
// [4] http://www.w3.org/TR/xml11/#sec-references
// [5] http://www.w3.org/TR/xml11/#sec-cdata-sect
}
}
}
6 changes: 1 addition & 5 deletions gendarme/console/gendarme.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -138,11 +138,7 @@
</Target>
-->
<Target Name="AfterBuild">
<Copy
SourceFiles="$(TargetDir)..\..\..\rules\rules.xml"
DestinationFolder="$(TargetDir)"
SkipUnchangedFiles="True"
/>
<Copy SourceFiles="$(TargetDir)..\..\..\rules\rules.xml" DestinationFolder="$(TargetDir)" SkipUnchangedFiles="True" />
</Target>
<PropertyGroup>
<PreBuildEvent>
Expand Down
4 changes: 2 additions & 2 deletions gendarme/framework/Test/Tests.Framework.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,9 @@
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemGroup>
<Reference Include="nunit.framework, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
<Reference Include="nunit.framework, Version=2.6.2.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\cecil\Test\libs\nunit-2.4.8\nunit.framework.dll</HintPath>
<HintPath>..\..\..\..\cecil\Test\libs\nunit-2.6.2\nunit.framework.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core">
Expand Down
41 changes: 41 additions & 0 deletions gendarme/gendarme-win.sln
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,13 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
AssemblyInfo.cs.in = AssemblyInfo.cs.in
AUTHORS = AUTHORS
ChangeLog = ChangeLog
gendarme-win.vsmdi = gendarme-win.vsmdi
Local.testsettings = Local.testsettings
MIT.X11 = MIT.X11
NEWS = NEWS
README = README
TODO = TODO
TraceAndTestImpact.testsettings = TraceAndTestImpact.testsettings
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tools", "Tools", "{A208E677-6A00-4F5C-A15B-5CCA90AB78FF}"
Expand Down Expand Up @@ -162,7 +165,12 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tests.Rules.Gendarme", "rul
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Cecil.Mdb", "..\..\cecil\symbols\mdb\Mono.Cecil.Mdb.csproj", "{8559DD7F-A16F-46D0-A05A-9139FAEBA8FD}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tests.Gendarme", "Tests.Gendarme\Tests.Gendarme.csproj", "{980F078D-36E7-4C5B-9738-8A0156A3D938}"
EndProject
Global
GlobalSection(TestCaseManagementSettings) = postSolution
CategoryFile = gendarme-win.vsmdi
EndGlobalSection
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|Mixed Platforms = Debug|Mixed Platforms
Expand Down Expand Up @@ -1879,6 +1887,38 @@ Global
{8559DD7F-A16F-46D0-A05A-9139FAEBA8FD}.Release|Any CPU.Build.0 = net_4_0_Release|Any CPU
{8559DD7F-A16F-46D0-A05A-9139FAEBA8FD}.Release|Mixed Platforms.ActiveCfg = net_4_0_Release|Any CPU
{8559DD7F-A16F-46D0-A05A-9139FAEBA8FD}.Release|Mixed Platforms.Build.0 = net_4_0_Release|Any CPU
{980F078D-36E7-4C5B-9738-8A0156A3D938}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{980F078D-36E7-4C5B-9738-8A0156A3D938}.Debug|Any CPU.Build.0 = Debug|Any CPU
{980F078D-36E7-4C5B-9738-8A0156A3D938}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{980F078D-36E7-4C5B-9738-8A0156A3D938}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{980F078D-36E7-4C5B-9738-8A0156A3D938}.net_2_0_Debug|Any CPU.ActiveCfg = Debug|Any CPU
{980F078D-36E7-4C5B-9738-8A0156A3D938}.net_2_0_Debug|Any CPU.Build.0 = Debug|Any CPU
{980F078D-36E7-4C5B-9738-8A0156A3D938}.net_2_0_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{980F078D-36E7-4C5B-9738-8A0156A3D938}.net_2_0_Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{980F078D-36E7-4C5B-9738-8A0156A3D938}.net_2_0_Release|Any CPU.ActiveCfg = Release|Any CPU
{980F078D-36E7-4C5B-9738-8A0156A3D938}.net_2_0_Release|Any CPU.Build.0 = Release|Any CPU
{980F078D-36E7-4C5B-9738-8A0156A3D938}.net_2_0_Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{980F078D-36E7-4C5B-9738-8A0156A3D938}.net_2_0_Release|Mixed Platforms.Build.0 = Release|Any CPU
{980F078D-36E7-4C5B-9738-8A0156A3D938}.net_3_5_Debug|Any CPU.ActiveCfg = Debug|Any CPU
{980F078D-36E7-4C5B-9738-8A0156A3D938}.net_3_5_Debug|Any CPU.Build.0 = Debug|Any CPU
{980F078D-36E7-4C5B-9738-8A0156A3D938}.net_3_5_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{980F078D-36E7-4C5B-9738-8A0156A3D938}.net_3_5_Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{980F078D-36E7-4C5B-9738-8A0156A3D938}.net_3_5_Release|Any CPU.ActiveCfg = Release|Any CPU
{980F078D-36E7-4C5B-9738-8A0156A3D938}.net_3_5_Release|Any CPU.Build.0 = Release|Any CPU
{980F078D-36E7-4C5B-9738-8A0156A3D938}.net_3_5_Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{980F078D-36E7-4C5B-9738-8A0156A3D938}.net_3_5_Release|Mixed Platforms.Build.0 = Release|Any CPU
{980F078D-36E7-4C5B-9738-8A0156A3D938}.net_4_0_Debug|Any CPU.ActiveCfg = Debug|Any CPU
{980F078D-36E7-4C5B-9738-8A0156A3D938}.net_4_0_Debug|Any CPU.Build.0 = Debug|Any CPU
{980F078D-36E7-4C5B-9738-8A0156A3D938}.net_4_0_Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{980F078D-36E7-4C5B-9738-8A0156A3D938}.net_4_0_Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{980F078D-36E7-4C5B-9738-8A0156A3D938}.net_4_0_Release|Any CPU.ActiveCfg = Release|Any CPU
{980F078D-36E7-4C5B-9738-8A0156A3D938}.net_4_0_Release|Any CPU.Build.0 = Release|Any CPU
{980F078D-36E7-4C5B-9738-8A0156A3D938}.net_4_0_Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{980F078D-36E7-4C5B-9738-8A0156A3D938}.net_4_0_Release|Mixed Platforms.Build.0 = Release|Any CPU
{980F078D-36E7-4C5B-9738-8A0156A3D938}.Release|Any CPU.ActiveCfg = Release|Any CPU
{980F078D-36E7-4C5B-9738-8A0156A3D938}.Release|Any CPU.Build.0 = Release|Any CPU
{980F078D-36E7-4C5B-9738-8A0156A3D938}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{980F078D-36E7-4C5B-9738-8A0156A3D938}.Release|Mixed Platforms.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down Expand Up @@ -1928,6 +1968,7 @@ Global
{0D974FFB-C19F-40D0-AD87-708D35E9BD3E} = {E83F7555-F98B-48D9-8CD6-1E46895F276D}
{FE98135B-0CD0-4C0A-942D-2E5FF9E3A20F} = {E83F7555-F98B-48D9-8CD6-1E46895F276D}
{C329FF89-4C07-4D72-AF5B-70B10670CB36} = {E83F7555-F98B-48D9-8CD6-1E46895F276D}
{980F078D-36E7-4C5B-9738-8A0156A3D938} = {E83F7555-F98B-48D9-8CD6-1E46895F276D}
{D68133BD-1E63-496E-9EDE-4FBDBF77B486} = {10772645-2837-44B1-9CFA-51A0A5CAC635}
{63E6915C-7EA4-4D76-AB28-0D7191EEA626} = {10772645-2837-44B1-9CFA-51A0A5CAC635}
{8559DD7F-A16F-46D0-A05A-9139FAEBA8FD} = {10772645-2837-44B1-9CFA-51A0A5CAC635}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,9 @@
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemGroup>
<Reference Include="nunit.framework, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
<Reference Include="nunit.framework, Version=2.6.2.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\..\cecil\Test\libs\nunit-2.4.8\nunit.framework.dll</HintPath>
<HintPath>..\..\..\..\..\cecil\Test\libs\nunit-2.6.2\nunit.framework.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,9 @@
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemGroup>
<Reference Include="nunit.framework, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
<Reference Include="nunit.framework, Version=2.6.2.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\..\cecil\Test\libs\nunit-2.4.8\nunit.framework.dll</HintPath>
<HintPath>..\..\..\..\..\cecil\Test\libs\nunit-2.6.2\nunit.framework.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core">
Expand Down
Loading