Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--main/msbuild/MDBuildTasks.targets65
-rw-r--r--main/msbuild/MDBuildTasks/FilterLocalCopyReferences.cs194
-rw-r--r--main/msbuild/MDBuildTasks/MDBuildTasks.csproj3
-rw-r--r--main/src/addins/AspNet/MonoDevelop.AspNet.csproj7
-rw-r--r--main/src/addins/MonoDevelop.Debugger.Soft/MonoDevelop.Debugger.Soft/MonoDevelop.Debugger.Soft.csproj2
-rw-r--r--main/src/addins/MonoDevelop.Debugger.VSCodeDebugProtocol/MonoDevelop.Debugger.VsCodeDebugProtocol/MonoDevelop.Debugger.VsCodeDebugProtocol.csproj1
-rw-r--r--main/src/addins/MonoDevelop.Debugger.Win32/MonoDevelop.Debugger.Win32/MonoDevelop.Debugger.Win32.csproj3
-rw-r--r--main/src/addins/MonoDevelop.GtkCore/libsteticui/libsteticui.csproj4
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.csproj18
-rw-r--r--main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.csproj1
-rw-r--r--main/src/addins/MonoDevelop.UnitTesting.NUnit/NUnit3Runner/NUnit3Runner.csproj5
-rw-r--r--main/src/addins/MonoDevelop.UnitTesting.NUnit/NUnitRunner/NUnitRunner.csproj4
-rw-r--r--main/src/addins/MonoDevelop.UnitTesting/MonoDevelop.UnitTesting.csproj6
-rw-r--r--main/src/addins/TextTemplating/MonoDevelop.TextTemplating/MonoDevelop.TextTemplating.csproj1
-rw-r--r--main/src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Shell.csproj1
-rw-r--r--main/src/addins/WindowsPlatform/WindowsPlatform/WindowsPlatform.csproj4
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Core.csproj82
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.csproj14
-rw-r--r--main/src/core/MonoDevelop.Startup/MonoDevelop.Startup.csproj1
-rw-r--r--main/tests/TestRunner/TestRunner.csproj6
-rw-r--r--main/tests/UnitTests/UnitTests.csproj2
-rw-r--r--main/tests/performance/MonoDevelop.PerformanceTesting/MonoDevelop.PerformanceTesting.csproj1
-rw-r--r--main/tests/ui/MonoDevelop.UserInterfaceTesting/MonoDevelop.UserInterfaceTesting.csproj2
23 files changed, 424 insertions, 3 deletions
diff --git a/main/msbuild/MDBuildTasks.targets b/main/msbuild/MDBuildTasks.targets
index 89e12ee012..66d7feec78 100644
--- a/main/msbuild/MDBuildTasks.targets
+++ b/main/msbuild/MDBuildTasks.targets
@@ -63,6 +63,20 @@
</Task>
</UsingTask>
+ <UsingTask
+ TaskName="FilterLocalCopyReferences"
+ TaskFactory="CodeTaskFactory"
+ AssemblyFile="$(RoslynCodeTaskFactory)"
+ Condition=" '$(RoslynCodeTaskFactory)' != '' ">
+ <!--
+ TaskFactory="RoslynCodeTaskFactory"
+ AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll" >
+ -->
+ <Task>
+ <Code Language="cs" Source="$(MSBuildThisFileDirectory)/MDBuildTasks/FilterLocalCopyReferences.cs" />
+ </Task>
+ </UsingTask>
+
<!--
=================================================================
File download logic adapted from Xamarin.Build.Download
@@ -195,4 +209,55 @@
ExtensionDependencies="@(_ResolvedExtension)"
-->
</Target>
+
+ <!--
+ =================================================================
+ Remove CopyLocal items from references unless thir filenames
+ match an IncludeCopyLocal item.
+
+ This works around a NuGet issue where PrivateAssets="runtime"
+ doesn't work. It also prevents accidental unwanted local copying.
+
+ Additional diagnostic information can be printed by setting the
+ property -p:DebugFilterCopyReferences=true. This will print
+ which files are being removed, which are being kept, and
+ a list of probable IncludeCopyLocal items. Search the log
+ for "<IncludeCopyLocal Include=" and audit each occurrence. These
+ can be suppressed with corresponding SuppressCopyLocal items.
+
+ =================================================================
+ -->
+
+ <Target Name="_NuGetPrivateAssetsWorkaround_FilterLocalCopyReferences" BeforeTargets="_CopyFilesMarkedCopyLocal">
+ <FilterLocalCopyReferences
+ ReferenceCopyLocalPaths="@(ReferenceCopyLocalPaths)"
+ IncludeList="@(IncludeCopyLocal)"
+ SuppressList="@(SuppressCopyLocal)"
+ ReferencedProjects="@(_MSBuildProjectReferenceExistent)"
+ Configuration="$(Configuration)"
+ Platform="$(Platform)"
+ ProjectDir="$(MSBuildProjectDirectory)"
+ ProjectName="$(MSBuildProjectName)"
+ DebugCopies="$(DebugFilterCopyReferences)">
+ <Output TaskParameter="ItemsToRemove" ItemName="_ReferenceCopyLocalPathsRemove" />
+ </FilterLocalCopyReferences>
+ <ItemGroup>
+ <ReferenceCopyLocalPaths Remove="@(_ReferenceCopyLocalPathsRemove)" />
+ <_ReferenceCopyLocalPathsRemove Remove="@(_ReferenceCopyLocalPathsRemove)" />
+ </ItemGroup>
+ </Target>
+
+ <!--
+ HACK: Another workaround for broken PrivateAssets.
+ This is injected directly into the project by a target from the package as a Content+CopyToOutputDirectory
+ item. Unlike the items added by NuGet itself there isn't any way we can generically identify things like
+ this so we have to resort to horrible hacks.
+ -->
+ <Target Name="_NuGetPrivateAssetsWorkaround_RemoveSquiteInjectedContent" Condition="'$(MSBuildProjectName)' != 'MonoDevelop.Core'" AfterTargets="ResolveAssemblyReferences">
+ <ItemGroup>
+ <Content Remove="@(Content->WithMetadataValue('Filename', 'e_sqlite3'))" />
+ <!-- for some reason it also shows up in ReferenceCopyLocalPaths in some projects, suppress the FilterLocalCopyReferences warning -->
+ <SuppressCopyLocal Include="e_sqlite3.dll" />
+ </ItemGroup>
+ </Target>
</Project>
diff --git a/main/msbuild/MDBuildTasks/FilterLocalCopyReferences.cs b/main/msbuild/MDBuildTasks/FilterLocalCopyReferences.cs
new file mode 100644
index 0000000000..14acbc4f1c
--- /dev/null
+++ b/main/msbuild/MDBuildTasks/FilterLocalCopyReferences.cs
@@ -0,0 +1,194 @@
+//
+// Copyright (c) Microsoft Corp (https://www.microsoft.com)
+//
+// 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.Linq;
+using System.Collections.Generic;
+using System.IO;
+using Microsoft.Build.Framework;
+using Microsoft.Build.Utilities;
+using System.Text;
+
+namespace MDBuildTasks
+{
+ public class FilterLocalCopyReferences : Task
+ {
+ [Required]
+ public ITaskItem[] ReferenceCopyLocalPaths { get; set; }
+
+ [Required]
+ public ITaskItem[] IncludeList { get; set; }
+ public ITaskItem[] SuppressList { get; set; }
+
+ public ITaskItem[] ReferencedProjects { get; set; }
+
+ public string Configuration { get; set; }
+ public string Platform { get; set; }
+ public string ProjectDir { get; set; }
+ public string ProjectName { get; set; }
+
+ public bool DebugCopies { get; set; }
+
+ [Output]
+ public ITaskItem[] ItemsToRemove { get; set; }
+
+ public override bool Execute ()
+ {
+ HashSet<string> localCopyCone = null;
+ HashSet<string> importedLocalCopyConeNames = null;
+ List<ITaskItem> localCopyKeep = null;
+ HashSet<string> unusedIncludeKeys = null;
+ HashSet<string> suppressKeyHash = null;
+
+ if (DebugCopies) {
+ localCopyKeep = new List<ITaskItem> ();
+ localCopyCone = new HashSet<string> (StringComparer.OrdinalIgnoreCase);
+ unusedIncludeKeys = new HashSet<string> (StringComparer.OrdinalIgnoreCase);
+ importedLocalCopyConeNames = new HashSet<string> (StringComparer.OrdinalIgnoreCase);
+ suppressKeyHash = new HashSet<string> (StringComparer.OrdinalIgnoreCase);
+
+ // we can't invoke custom targets on the referenced project to get the output dir
+ // as some projects will not have these targets.
+ // instead, just poke in some standard location and hope it works. worse case, our diagnostics are poorer.
+ if (ReferencedProjects != null) {
+ foreach (var projectRef in ReferencedProjects) {
+ if (string.Equals (projectRef.GetMetadata ("BuildReference"), "true", StringComparison.OrdinalIgnoreCase)) {
+ var projectLocalCopyConeFile = GetLocalCopyConeFile (Path.GetDirectoryName (projectRef.GetMetadata ("FullPath")), projectRef.GetMetadata ("Configuration"), projectRef.GetMetadata ("Platform"));
+ if (File.Exists (projectLocalCopyConeFile)) {
+ foreach (var line in File.ReadAllLines (projectLocalCopyConeFile)) {
+ localCopyCone.Add (line);
+ }
+ }
+ }
+ }
+ }
+ foreach (var f in localCopyCone) {
+ importedLocalCopyConeNames.Add (Path.GetFileName (f));
+ }
+ if (SuppressList != null) {
+ foreach (var include in SuppressList) {
+ suppressKeyHash.Add (include.ItemSpec);
+ }
+ }
+ }
+
+ var toRemove = new List<ITaskItem> ();
+
+ var includeKeyHash = new HashSet<string> (StringComparer.OrdinalIgnoreCase);
+ foreach (var include in IncludeList) {
+ includeKeyHash.Add (include.ItemSpec);
+ }
+
+ foreach (var item in ReferenceCopyLocalPaths) {
+ var filename = Path.GetFileName (item.ItemSpec);
+ var includeKey = filename;
+ switch (Path.GetExtension (includeKey).ToLowerInvariant ()) {
+ case ".dll":
+ if (includeKey.EndsWith (".resources.dll", StringComparison.OrdinalIgnoreCase)) {
+ includeKey = includeKey.Substring (0, includeKey.Length - ".resources.dll".Length) + ".dll";
+ }
+ break;
+ case ".config":
+ includeKey = Path.GetFileNameWithoutExtension (includeKey);
+ break;
+ case ".pdb":
+ case ".xml":
+ includeKey = Path.ChangeExtension (includeKey, ".dll");
+ break;
+ }
+
+ if (!includeKeyHash.Contains (includeKey)) {
+ toRemove.Add (item);
+ if (DebugCopies) {
+ // Log a message that this may need to be imported.
+ // If the file was not in the cone of files that referenced projects have already local copied.
+ // Check the filename, not just the full path, because there are some edge cases like SharpZipLib
+ // where there are multiple different assemblies with the same name and we don't want copies of
+ // both floating around.
+ if (!importedLocalCopyConeNames.Contains (filename) && !suppressKeyHash.Contains (includeKey)) {
+ unusedIncludeKeys.Add (includeKey);
+ }
+ }
+ } else if (DebugCopies) {
+ localCopyCone.Add (item.ItemSpec);
+ localCopyKeep.Add (item);
+ }
+ }
+
+ ItemsToRemove = toRemove.ToArray ();
+
+ if (!DebugCopies) {
+ return true;
+ }
+
+ string localCopyConeFile = GetLocalCopyConeFile (ProjectDir, Configuration, Platform);
+ if (localCopyCone.Count > 0) {
+ File.WriteAllLines (localCopyConeFile, localCopyCone);
+ } else if (File.Exists (localCopyConeFile)) {
+ File.Delete (localCopyConeFile);
+ }
+
+ if ((toRemove.Count + localCopyKeep.Count + unusedIncludeKeys.Count) == 0) {
+ return true;
+ }
+
+ var message = new StringBuilder ();
+ message.AppendLine ($"====== FilterLocalCopyReferences {ProjectName} Debug ======");
+
+ if (toRemove.Count> 0) {
+ message.AppendLine ("Removing items:");
+ foreach (var item in toRemove) {
+ message.Append (" ");
+ message.AppendLine (item.ItemSpec);
+ }
+ }
+ if (localCopyKeep.Count > 0) {
+ message.AppendLine ("Keeping items:");
+ foreach (var item in localCopyKeep) {
+ message.Append (" ");
+ message.AppendLine (item.ItemSpec);
+ }
+ }
+ if (unusedIncludeKeys.Count > 0) {
+ message.AppendLine ("Unused keys:");
+ foreach (var key in unusedIncludeKeys) {
+ message.Append (" <IncludeCopyLocal Include=\"");
+ message.Append (key);
+ message.AppendLine ("\" />");
+ }
+ }
+ message.AppendLine ("=============================================");
+ Log.LogMessage (MessageImportance.High, message.ToString ());
+
+ return true;
+ }
+
+ static string GetLocalCopyConeFile (string projectDir, string configuration, string platform)
+ {
+ var objDir = Path.Combine (projectDir, "obj");
+ if (!string.IsNullOrEmpty (platform) && !(string.Equals (platform, "anycpu", StringComparison.OrdinalIgnoreCase) || string.Equals (platform, "any cpu", StringComparison.OrdinalIgnoreCase))) {
+ objDir = Path.Combine (objDir, platform);
+ }
+ objDir = Path.Combine (objDir, configuration);
+ return Path.Combine (objDir, "LocalCopyCone.txt");
+ }
+ }
+}
diff --git a/main/msbuild/MDBuildTasks/MDBuildTasks.csproj b/main/msbuild/MDBuildTasks/MDBuildTasks.csproj
index 158a8ed0c7..4ae6f110d3 100644
--- a/main/msbuild/MDBuildTasks/MDBuildTasks.csproj
+++ b/main/msbuild/MDBuildTasks/MDBuildTasks.csproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@@ -38,6 +38,7 @@
<PackageReference Include="Microsoft.Build.Tasks.Core" Version="15.9.20" />
</ItemGroup>
<ItemGroup>
+ <Compile Include="FilterLocalCopyReferences.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="DownloadFiles.cs" />
<Compile Include="DownloadNupkg.cs" />
diff --git a/main/src/addins/AspNet/MonoDevelop.AspNet.csproj b/main/src/addins/AspNet/MonoDevelop.AspNet.csproj
index 3950f35d4b..24595eaf38 100644
--- a/main/src/addins/AspNet/MonoDevelop.AspNet.csproj
+++ b/main/src/addins/AspNet/MonoDevelop.AspNet.csproj
@@ -87,6 +87,13 @@
<Reference Include="System.ServiceModel" />
<Reference Include="System.Runtime.Serialization" />
<PackageReference Include="Microsoft.AspNet.Mvc" version="5.2.7" PrivateAssets="runtime" />
+ <IncludeCopyLocal Include="System.Web.Mvc.dll" />
+ <IncludeCopyLocal Include="System.Web.Razor.dll" />
+ <IncludeCopyLocal Include="System.Web.Helpers.dll" />
+ <IncludeCopyLocal Include="System.Web.WebPages.Deployment.dll" />
+ <IncludeCopyLocal Include="System.Web.WebPages.Razor.dll" />
+ <IncludeCopyLocal Include="System.Web.WebPages.dll" />
+ <IncludeCopyLocal Include="Microsoft.Web.Infrastructure.dll" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Properties\MonoDevelop.AspNet.addin.xml" />
diff --git a/main/src/addins/MonoDevelop.Debugger.Soft/MonoDevelop.Debugger.Soft/MonoDevelop.Debugger.Soft.csproj b/main/src/addins/MonoDevelop.Debugger.Soft/MonoDevelop.Debugger.Soft/MonoDevelop.Debugger.Soft.csproj
index d3657e3e41..e36a3db61a 100644
--- a/main/src/addins/MonoDevelop.Debugger.Soft/MonoDevelop.Debugger.Soft/MonoDevelop.Debugger.Soft.csproj
+++ b/main/src/addins/MonoDevelop.Debugger.Soft/MonoDevelop.Debugger.Soft/MonoDevelop.Debugger.Soft.csproj
@@ -57,6 +57,8 @@
<Name>Mono.Addins</Name>
<Private>False</Private>
</ProjectReference>
+ <IncludeCopyLocal Include="Mono.Debugger.Soft.dll" />
+ <IncludeCopyLocal Include="Mono.Debugging.Soft.dll" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
</Project>
diff --git a/main/src/addins/MonoDevelop.Debugger.VSCodeDebugProtocol/MonoDevelop.Debugger.VsCodeDebugProtocol/MonoDevelop.Debugger.VsCodeDebugProtocol.csproj b/main/src/addins/MonoDevelop.Debugger.VSCodeDebugProtocol/MonoDevelop.Debugger.VsCodeDebugProtocol/MonoDevelop.Debugger.VsCodeDebugProtocol.csproj
index e73f08b74d..abfc017abb 100644
--- a/main/src/addins/MonoDevelop.Debugger.VSCodeDebugProtocol/MonoDevelop.Debugger.VsCodeDebugProtocol/MonoDevelop.Debugger.VsCodeDebugProtocol.csproj
+++ b/main/src/addins/MonoDevelop.Debugger.VSCodeDebugProtocol/MonoDevelop.Debugger.VsCodeDebugProtocol/MonoDevelop.Debugger.VsCodeDebugProtocol.csproj
@@ -40,6 +40,7 @@
<Name>Mono.Debugging</Name>
<Private>False</Private>
</ProjectReference>
+ <IncludeCopyLocal Include="Microsoft.VisualStudio.Shared.VSCodeDebugProtocol.dll" />
</ItemGroup>
<ItemGroup>
<Compile Include="AddinInfo.cs" />
diff --git a/main/src/addins/MonoDevelop.Debugger.Win32/MonoDevelop.Debugger.Win32/MonoDevelop.Debugger.Win32.csproj b/main/src/addins/MonoDevelop.Debugger.Win32/MonoDevelop.Debugger.Win32/MonoDevelop.Debugger.Win32.csproj
index e2223deff8..74a63b4193 100644
--- a/main/src/addins/MonoDevelop.Debugger.Win32/MonoDevelop.Debugger.Win32/MonoDevelop.Debugger.Win32.csproj
+++ b/main/src/addins/MonoDevelop.Debugger.Win32/MonoDevelop.Debugger.Win32/MonoDevelop.Debugger.Win32.csproj
@@ -61,6 +61,9 @@
<Project>{74704c00-5861-4f86-920c-865148a175c5}</Project>
<Name>Mono.Debugging.Win32</Name>
</ProjectReference>
+ <IncludeCopyLocal Include="Mono.Debugging.Win32.dll" />
+ <IncludeCopyLocal Include="CorApi2.dll" />
+ <IncludeCopyLocal Include="CorApi.dll" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
diff --git a/main/src/addins/MonoDevelop.GtkCore/libsteticui/libsteticui.csproj b/main/src/addins/MonoDevelop.GtkCore/libsteticui/libsteticui.csproj
index 3672c7afa8..0583de188d 100644
--- a/main/src/addins/MonoDevelop.GtkCore/libsteticui/libsteticui.csproj
+++ b/main/src/addins/MonoDevelop.GtkCore/libsteticui/libsteticui.csproj
@@ -17,6 +17,10 @@
<Reference Include="System.Xml" />
<Reference Include="System.Core" />
<PackageReference Include="Mono.Cecil" Version="0.10.1" />
+ <SuppressCopyLocal Include="Mono.Cecil.Mdb.dll" />
+ <SuppressCopyLocal Include="Mono.Cecil.Pdb.dll" />
+ <SuppressCopyLocal Include="Mono.Cecil.Rocks.dll" />
+ <SuppressCopyLocal Include="Mono.Cecil.dll" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\libstetic\libstetic.csproj">
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.csproj b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.csproj
index 0d8010d28d..8cdfa25c46 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.csproj
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.csproj
@@ -28,7 +28,23 @@
<Reference Include="WindowsBase" />
<PackageReference Include="NuGet.PackageManagement" Version="4.8.0" PrivateAssets="runtime" />
<PackageReference Include="NuGet.Indexing" Version="4.8.0" PrivateAssets="runtime" />
- <PackageReference Include="SharpZipLib" Version="0.86.0" PrivateAssets="all" ExcludeAssets="all" />
+ <IncludeCopyLocal Include="Lucene.Net.dll" />
+ <IncludeCopyLocal Include="Microsoft.Web.XmlTransform.dll" />
+ <IncludeCopyLocal Include="NuGet.Commands.dll" />
+ <IncludeCopyLocal Include="NuGet.Common.dll" />
+ <IncludeCopyLocal Include="NuGet.Configuration.dll" />
+ <IncludeCopyLocal Include="NuGet.Credentials.dll" />
+ <IncludeCopyLocal Include="NuGet.DependencyResolver.Core.dll" />
+ <IncludeCopyLocal Include="NuGet.Frameworks.dll" />
+ <IncludeCopyLocal Include="NuGet.Indexing.dll" />
+ <IncludeCopyLocal Include="NuGet.LibraryModel.dll" />
+ <IncludeCopyLocal Include="NuGet.PackageManagement.dll" />
+ <IncludeCopyLocal Include="NuGet.Packaging.dll" />
+ <IncludeCopyLocal Include="NuGet.Packaging.Core.dll" />
+ <IncludeCopyLocal Include="NuGet.ProjectModel.dll" />
+ <IncludeCopyLocal Include="NuGet.Protocol.dll" />
+ <IncludeCopyLocal Include="NuGet.Resolver.dll" />
+ <IncludeCopyLocal Include="NuGet.Versioning.dll" />
</ItemGroup>
<ItemGroup>
<Compile Include="AssemblyInfo.cs" />
diff --git a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.csproj b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.csproj
index 86d4e702b7..76c06d79e9 100644
--- a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.csproj
+++ b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.csproj
@@ -25,6 +25,7 @@
<HintPath>..\..\..\external\Xamarin.Mac.dll</HintPath>
<Private>False</Private>
</Reference>
+ <IncludeCopyLocal Include="RefactoringEssentials.dll" />
</ItemGroup>
<ItemGroup>
<Compile Include="AssemblyInfo.cs" />
diff --git a/main/src/addins/MonoDevelop.UnitTesting.NUnit/NUnit3Runner/NUnit3Runner.csproj b/main/src/addins/MonoDevelop.UnitTesting.NUnit/NUnit3Runner/NUnit3Runner.csproj
index 0283f76666..45e051fb25 100644
--- a/main/src/addins/MonoDevelop.UnitTesting.NUnit/NUnit3Runner/NUnit3Runner.csproj
+++ b/main/src/addins/MonoDevelop.UnitTesting.NUnit/NUnit3Runner/NUnit3Runner.csproj
@@ -15,6 +15,11 @@
<Reference Include="System" />
<Reference Include="System.Xml" />
<PackageReference Include="NUnit.Engine" Version="$(NuGetVersionNUnit3)" PrivateAssets="runtime" />
+ <IncludeCopyLocal Include="Mono.Cecil.dll" />
+ <IncludeCopyLocal Include="nunit-agent-x86.exe" />
+ <IncludeCopyLocal Include="nunit-agent.exe" />
+ <IncludeCopyLocal Include="nunit.engine.api.dll" />
+ <IncludeCopyLocal Include="nunit.engine.dll" />
</ItemGroup>
<ItemGroup>
<Compile Include="Program.cs" />
diff --git a/main/src/addins/MonoDevelop.UnitTesting.NUnit/NUnitRunner/NUnitRunner.csproj b/main/src/addins/MonoDevelop.UnitTesting.NUnit/NUnitRunner/NUnitRunner.csproj
index 1066fcdfd3..227b513900 100644
--- a/main/src/addins/MonoDevelop.UnitTesting.NUnit/NUnitRunner/NUnitRunner.csproj
+++ b/main/src/addins/MonoDevelop.UnitTesting.NUnit/NUnitRunner/NUnitRunner.csproj
@@ -18,6 +18,10 @@
<!-- this is hacky but there is no package that exposes nunit.util.dll as a lib assembly -->
<DownloadNupkg Include="NUnit.Runners" Version="$(NuGetVersionNUnit2)" />
<Reference Include="nunit.util" HintPath="$(DownloadNupkgDirectory)NUnit.Runners.$(NuGetVersionNUnit2)\tools\lib\nunit.util.dll" />
+ <IncludeCopyLocal Include="nunit.framework.dll" />
+ <IncludeCopyLocal Include="nunit.core.dll" />
+ <IncludeCopyLocal Include="nunit.core.interfaces.dll" />
+ <IncludeCopyLocal Include="nunit.util.dll" />
</ItemGroup>
<ItemGroup>
<Compile Include="NUnitTestRunner.cs" />
diff --git a/main/src/addins/MonoDevelop.UnitTesting/MonoDevelop.UnitTesting.csproj b/main/src/addins/MonoDevelop.UnitTesting/MonoDevelop.UnitTesting.csproj
index 57061dab26..264728ae52 100644
--- a/main/src/addins/MonoDevelop.UnitTesting/MonoDevelop.UnitTesting.csproj
+++ b/main/src/addins/MonoDevelop.UnitTesting/MonoDevelop.UnitTesting.csproj
@@ -20,6 +20,12 @@
<Reference Include="System.Runtime" />
<Reference Include="System.Runtime.Serialization" />
<PackageReference Include="Microsoft.TestPlatform.TranslationLayer" Version="$(NuGetVersionMicrosoftTestPlatform)" />
+ <IncludeCopyLocal Include="Microsoft.TestPlatform.CoreUtilities.dll" />
+ <IncludeCopyLocal Include="Microsoft.TestPlatform.PlatformAbstractions.dll" />
+ <IncludeCopyLocal Include="Microsoft.VisualStudio.TestPlatform.ObjectModel.dll" />
+ <IncludeCopyLocal Include="Microsoft.TestPlatform.CommunicationUtilities.dll" />
+ <IncludeCopyLocal Include="Microsoft.TestPlatform.VsTestConsole.TranslationLayer.dll" />
+ <IncludeCopyLocal Include="Microsoft.VisualStudio.TestPlatform.Common.dll" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\core\MonoDevelop.Core\MonoDevelop.Core.csproj">
diff --git a/main/src/addins/TextTemplating/MonoDevelop.TextTemplating/MonoDevelop.TextTemplating.csproj b/main/src/addins/TextTemplating/MonoDevelop.TextTemplating/MonoDevelop.TextTemplating.csproj
index 0691a23571..a816287845 100644
--- a/main/src/addins/TextTemplating/MonoDevelop.TextTemplating/MonoDevelop.TextTemplating.csproj
+++ b/main/src/addins/TextTemplating/MonoDevelop.TextTemplating/MonoDevelop.TextTemplating.csproj
@@ -61,6 +61,7 @@
<Name>Mono.Addins</Name>
<Private>False</Private>
</ProjectReference>
+ <IncludeCopyLocal Include="Mono.TextTemplating.dll" />
</ItemGroup>
<ItemGroup>
<ExtensionContent Include="Templates\**\*.*" />
diff --git a/main/src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Shell.csproj b/main/src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Shell.csproj
index 964a86c2e2..adb3982e19 100644
--- a/main/src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Shell.csproj
+++ b/main/src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Shell.csproj
@@ -26,6 +26,7 @@
<Reference Include="WindowsBase" />
<Reference Include="WindowsFormsIntegration" />
<Reference Include="System.Xaml" />
+ <SuppressCopyLocal Include="Microsoft.WindowsAPICodePack.dll" />
</ItemGroup>
<ItemGroup>
<InternalsVisibleTo Include="Microsoft.WindowsAPICodePack.ShellExtensions" />
diff --git a/main/src/addins/WindowsPlatform/WindowsPlatform/WindowsPlatform.csproj b/main/src/addins/WindowsPlatform/WindowsPlatform/WindowsPlatform.csproj
index 055d750318..9739a3ea01 100644
--- a/main/src/addins/WindowsPlatform/WindowsPlatform/WindowsPlatform.csproj
+++ b/main/src/addins/WindowsPlatform/WindowsPlatform/WindowsPlatform.csproj
@@ -58,6 +58,10 @@
<Project>{C93D746E-1586-4D4F-B411-BF5A966E6A08}</Project>
<Name>Xwt.WPF</Name>
</ProjectReference>
+ <IncludeCopyLocal Include="Microsoft.WindowsAPICodePack.dll" />
+ <IncludeCopyLocal Include="Microsoft.WindowsAPICodePack.Shell.dll" />
+ <IncludeCopyLocal Include="Xwt.Gtk.Windows.dll" />
+ <IncludeCopyLocal Include="Xwt.WPF.dll" />
</ItemGroup>
<ItemGroup>
<Compile Include="Dialogs\AddFileDialogHandler.cs" />
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.csproj b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.csproj
index bd7ed17532..7e478d33e6 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.csproj
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.csproj
@@ -95,7 +95,7 @@
<PackageReference Include="MonoDevelopDev.Analyzers" Version="$(NuGetVersionMonoDevelopAnalyzers)" />
<PackageReference Include="Newtonsoft.Json" Version="$(NuGetVersionNewtonsoftJson)" PrivateAssets="runtime" />
<PackageReference Include="JetBrains.SharpZipLib.Stripped" Version="0.87.20170615.10" PrivateAssets="runtime" />
- <PackageReference Include="SQLitePCLRaw.bundle_e_sqlite3" Version="1.1.11" PrivateAssets="runtime" />
+ <PackageReference Include="SQLitePCLRaw.bundle_e_sqlite3" Version="1.1.11" PrivateAssets="runtime,build" />
<PackageReference Include="StreamJsonRpc" Version="1.5.43" PrivateAssets="runtime" />
<PackageReference Include="System.ValueTuple" Version="4.5.0" PrivateAssets="runtime" />
<!-- remove this as it conflicts with the one in mscorlib. mono bug? -->
@@ -104,6 +104,86 @@
<PackageReference Include="Microsoft.VisualStudio.Threading.Analyzers" Version="16.0.96-beta" ExcludeAssets="all" />
</ItemGroup>
<ItemGroup>
+ <IncludeCopyLocal Include="Humanizer.dll" />
+ <IncludeCopyLocal Include="ICSharpCode.Decompiler.dll" />
+ <IncludeCopyLocal Include="ICSharpCode.SharpZipLib.dll" />
+ <IncludeCopyLocal Include="Microsoft.Build.MSBuildLocator.dll" />
+ <IncludeCopyLocal Include="Microsoft.CodeAnalysis.CSharp.dll" />
+ <IncludeCopyLocal Include="Microsoft.CodeAnalysis.CSharp.EditorFeatures.dll" />
+ <IncludeCopyLocal Include="Microsoft.CodeAnalysis.CSharp.Features.dll" />
+ <IncludeCopyLocal Include="Microsoft.CodeAnalysis.CSharp.Workspaces.dll" />
+ <IncludeCopyLocal Include="Microsoft.CodeAnalysis.dll" />
+ <IncludeCopyLocal Include="Microsoft.CodeAnalysis.EditorFeatures.dll" />
+ <IncludeCopyLocal Include="Microsoft.CodeAnalysis.EditorFeatures.Text.dll" />
+ <IncludeCopyLocal Include="Microsoft.CodeAnalysis.EditorFeatures.Wpf.dll" />
+ <IncludeCopyLocal Include="Microsoft.CodeAnalysis.Elfie.dll" />
+ <IncludeCopyLocal Include="Microsoft.CodeAnalysis.ExternalAccess.MonoDevelop.dll" />
+ <IncludeCopyLocal Include="Microsoft.CodeAnalysis.Features.dll" />
+ <IncludeCopyLocal Include="Microsoft.CodeAnalysis.VisualBasic.dll" />
+ <IncludeCopyLocal Include="Microsoft.CodeAnalysis.VisualBasic.EditorFeatures.dll" />
+ <IncludeCopyLocal Include="Microsoft.CodeAnalysis.VisualBasic.Features.dll" />
+ <IncludeCopyLocal Include="Microsoft.CodeAnalysis.VisualBasic.Workspaces.dll" />
+ <IncludeCopyLocal Include="Microsoft.CodeAnalysis.Workspaces.dll" />
+ <IncludeCopyLocal Include="Microsoft.DiaSymReader.dll" />
+ <IncludeCopyLocal Include="Microsoft.Microsoft.CodeAnalysis.Workspaces.dll" />
+ <IncludeCopyLocal Include="Microsoft.VisualStudio.CodingConventions.dll" />
+ <IncludeCopyLocal Include="Microsoft.VisualStudio.Composition.dll" />
+ <IncludeCopyLocal Include="Microsoft.VisualStudio.Composition.NetFxAttributes.dll" />
+ <IncludeCopyLocal Include="Microsoft.VisualStudio.CoreUtility.dll" />
+ <IncludeCopyLocal Include="Microsoft.VisualStudio.ImageCatalog.dll" />
+ <IncludeCopyLocal Include="Microsoft.VisualStudio.Imaging.dll" />
+ <IncludeCopyLocal Include="Microsoft.VisualStudio.Imaging.Interop.14.0.DesignTime.dll" />
+ <IncludeCopyLocal Include="Microsoft.VisualStudio.Language.dll" />
+ <IncludeCopyLocal Include="Microsoft.VisualStudio.Language.Intellisense.dll" />
+ <IncludeCopyLocal Include="Microsoft.VisualStudio.Language.NavigateTo.Interfaces.dll" />
+ <IncludeCopyLocal Include="Microsoft.VisualStudio.Language.StandardClassification.dll" />
+ <IncludeCopyLocal Include="Microsoft.VisualStudio.OLE.Interop.dll" />
+ <IncludeCopyLocal Include="Microsoft.VisualStudio.Platform.VSEditor.dll" />
+ <IncludeCopyLocal Include="Microsoft.VisualStudio.Shell.Interop.10.0.dll" />
+ <IncludeCopyLocal Include="Microsoft.VisualStudio.Shell.Interop.11.0.dll" />
+ <IncludeCopyLocal Include="Microsoft.VisualStudio.Shell.Interop.12.0.dll" />
+ <IncludeCopyLocal Include="Microsoft.VisualStudio.Shell.Interop.14.0.DesignTime.dll" />
+ <IncludeCopyLocal Include="Microsoft.VisualStudio.Shell.Interop.8.0.dll" />
+ <IncludeCopyLocal Include="Microsoft.VisualStudio.Shell.Interop.dll" />
+ <IncludeCopyLocal Include="Microsoft.VisualStudio.Text.Data.dll" />
+ <IncludeCopyLocal Include="Microsoft.VisualStudio.Text.Internal.dll" />
+ <IncludeCopyLocal Include="Microsoft.VisualStudio.Text.Logic.dll" />
+ <IncludeCopyLocal Include="Microsoft.VisualStudio.Text.UI.dll" />
+ <IncludeCopyLocal Include="Microsoft.VisualStudio.Text.UI.Wpf.dll" />
+ <IncludeCopyLocal Include="Microsoft.VisualStudio.TextManager.Interop.8.0.dll" />
+ <IncludeCopyLocal Include="Microsoft.VisualStudio.TextManager.Interop.dll" />
+ <IncludeCopyLocal Include="Microsoft.VisualStudio.Threading.dll" />
+ <IncludeCopyLocal Include="Microsoft.VisualStudio.Utilities.dll" />
+ <IncludeCopyLocal Include="Microsoft.VisualStudio.Validation.dll" />
+ <IncludeCopyLocal Include="Mono.Addins.dll" />
+ <IncludeCopyLocal Include="Mono.Addins.Setup.dll" />
+ <IncludeCopyLocal Include="Mono.Cecil.dll" />
+ <IncludeCopyLocal Include="Mono.Cecil.Mdb.dll" />
+ <IncludeCopyLocal Include="Mono.Cecil.Pdb.dll" />
+ <IncludeCopyLocal Include="Mono.Cecil.Rocks.dll" />
+ <IncludeCopyLocal Include="Newtonsoft.Json.dll" />
+ <IncludeCopyLocal Include="SQLitePCLRaw.batteries_e_sqlite3.dll" />
+ <IncludeCopyLocal Include="SQLitePCLRaw.batteries_v2.dll" />
+ <IncludeCopyLocal Include="SQLitePCLRaw.core.dll" />
+ <IncludeCopyLocal Include="SQLitePCLRaw.provider.e_sqlite3.dll" />
+ <IncludeCopyLocal Include="StreamJsonRpc.dll" />
+ <IncludeCopyLocal Include="System.Buffers.dll" />
+ <IncludeCopyLocal Include="System.Collections.Immutable.dll" />
+ <IncludeCopyLocal Include="System.Composition.AttributedModel.dll" />
+ <IncludeCopyLocal Include="System.Composition.Convention.dll" />
+ <IncludeCopyLocal Include="System.Composition.Hosting.dll" />
+ <IncludeCopyLocal Include="System.Composition.Runtime.dll" />
+ <IncludeCopyLocal Include="System.Composition.TypedParts.dll" />
+ <IncludeCopyLocal Include="System.Memory.dll" />
+ <IncludeCopyLocal Include="System.Numerics.Vectors.dll" />
+ <IncludeCopyLocal Include="System.Reflection.Metadata.dll" />
+ <IncludeCopyLocal Include="System.Runtime.CompilerServices.Unsafe.dll" />
+ <IncludeCopyLocal Include="System.Text.Encoding.CodePages.dll" />
+ <IncludeCopyLocal Include="System.Threading.Tasks.Dataflow.dll" />
+ <IncludeCopyLocal Include="System.Threading.Tasks.Extensions.dll" />
+ <IncludeCopyLocal Include="System.ValueTuple.dll" />
+ </ItemGroup>
+ <ItemGroup>
<Compile Include="MonoDevelop.Core\StringParserService.cs" />
<Compile Include="MonoDevelop.Core\UserException.cs" />
<Compile Include="MonoDevelop.Core\Runtime.cs" />
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.csproj b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.csproj
index 3a7d302c76..be498867ca 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.csproj
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.csproj
@@ -63,6 +63,20 @@
<PackageReference Include="Microsoft.TemplateEngine.Edge" Version="$(NuGetVersionMicrosoftTemplateEngine)" PrivateAssets="runtime" />
<PackageReference Include="Microsoft.TemplateEngine.Orchestrator.RunnableProjects" Version="$(NuGetVersionMicrosoftTemplateEngine)" PrivateAssets="runtime" />
<PackageReference Include="YamlDotNet.Signed" Version="5.2.1" />
+ <IncludeCopyLocal Include="ICSharpCode.NRefactory.Cecil.dll" />
+ <IncludeCopyLocal Include="ICSharpCode.NRefactory.CSharp.dll" />
+ <IncludeCopyLocal Include="ICSharpCode.NRefactory.dll" />
+ <IncludeCopyLocal Include="Microsoft.TemplateEngine.Abstractions.dll" />
+ <IncludeCopyLocal Include="Microsoft.TemplateEngine.Core.Contracts.dll" />
+ <IncludeCopyLocal Include="Microsoft.TemplateEngine.Core.dll" />
+ <IncludeCopyLocal Include="Microsoft.TemplateEngine.Edge.dll" />
+ <IncludeCopyLocal Include="Microsoft.TemplateEngine.Orchestrator.RunnableProjects.dll" />
+ <IncludeCopyLocal Include="Microsoft.TemplateEngine.Utils.dll" />
+ <IncludeCopyLocal Include="Mono.Addins.Gui.dll" />
+ <IncludeCopyLocal Include="Mono.Debugging.dll" />
+ <IncludeCopyLocal Include="Xwt.dll" />
+ <IncludeCopyLocal Include="Xwt.Gtk.dll" />
+ <IncludeCopyLocal Include="YamlDotNet.dll" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\MonoDevelop.Core\MonoDevelop.Core.csproj">
diff --git a/main/src/core/MonoDevelop.Startup/MonoDevelop.Startup.csproj b/main/src/core/MonoDevelop.Startup/MonoDevelop.Startup.csproj
index e162fb60cb..06babcc9f7 100644
--- a/main/src/core/MonoDevelop.Startup/MonoDevelop.Startup.csproj
+++ b/main/src/core/MonoDevelop.Startup/MonoDevelop.Startup.csproj
@@ -48,6 +48,7 @@
<Project>{42D1CE65-A14B-4218-B787-58AD7AA68513}</Project>
<Name>Mono.Addins.CecilReflector</Name>
</ProjectReference>
+ <IncludeCopyLocal Include="Mono.Addins.CecilReflector.dll" />
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
diff --git a/main/tests/TestRunner/TestRunner.csproj b/main/tests/TestRunner/TestRunner.csproj
index a82747f99f..0541cb498c 100644
--- a/main/tests/TestRunner/TestRunner.csproj
+++ b/main/tests/TestRunner/TestRunner.csproj
@@ -19,6 +19,12 @@
<DownloadNupkg Include="NUnit.Runners" Version="$(NuGetVersionNUnit2)" />
<Reference Include="nunit.util" HintPath="$(DownloadNupkgDirectory)NUnit.Runners.$(NuGetVersionNUnit2)\tools\lib\nunit.util.dll" />
<Reference Include="nunit-console-runner" HintPath="$(DownloadNupkgDirectory)NUnit.Runners.$(NuGetVersionNUnit2)\tools\lib\nunit-console-runner.dll" />
+ <IncludeCopyLocal Include="nunit.framework.dll" />
+ <IncludeCopyLocal Include="nunit.core.dll" />
+ <IncludeCopyLocal Include="nunit.core.interfaces.dll" />
+ <IncludeCopyLocal Include="ICSharpCode.SharpZipLib.dll" />
+ <IncludeCopyLocal Include="nunit-console-runner.dll" />
+ <IncludeCopyLocal Include="nunit.util.dll" />
</ItemGroup>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs" />
diff --git a/main/tests/UnitTests/UnitTests.csproj b/main/tests/UnitTests/UnitTests.csproj
index 730158b260..a2d1f4b25c 100644
--- a/main/tests/UnitTests/UnitTests.csproj
+++ b/main/tests/UnitTests/UnitTests.csproj
@@ -34,6 +34,8 @@
<Project>{D12F0F7B-8DE3-43EC-BA49-41052D065A9B}</Project>
<Name>GuiUnit_NET_4_5</Name>
</ProjectReference>
+ <IncludeCopyLocal Include="GuiUnit.exe" />
+ <IncludeCopyLocal Include="GuiUnit.dll" />
</ItemGroup>
<ItemGroup>
<Compile Include="Util.cs" />
diff --git a/main/tests/performance/MonoDevelop.PerformanceTesting/MonoDevelop.PerformanceTesting.csproj b/main/tests/performance/MonoDevelop.PerformanceTesting/MonoDevelop.PerformanceTesting.csproj
index 7891c843f5..e10b560326 100644
--- a/main/tests/performance/MonoDevelop.PerformanceTesting/MonoDevelop.PerformanceTesting.csproj
+++ b/main/tests/performance/MonoDevelop.PerformanceTesting/MonoDevelop.PerformanceTesting.csproj
@@ -16,6 +16,7 @@
<ItemGroup>
<Reference Include="System" />
<PackageReference Include="NUnit" Version="$(NuGetVersionNUnit2)" />
+ <IncludeCopyLocal Include="nunit.framework.dll" />
</ItemGroup>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs" />
diff --git a/main/tests/ui/MonoDevelop.UserInterfaceTesting/MonoDevelop.UserInterfaceTesting.csproj b/main/tests/ui/MonoDevelop.UserInterfaceTesting/MonoDevelop.UserInterfaceTesting.csproj
index 9e63f99c1a..6e88e7b809 100644
--- a/main/tests/ui/MonoDevelop.UserInterfaceTesting/MonoDevelop.UserInterfaceTesting.csproj
+++ b/main/tests/ui/MonoDevelop.UserInterfaceTesting/MonoDevelop.UserInterfaceTesting.csproj
@@ -49,6 +49,8 @@
<Name>MonoDevelop.Ide</Name>
<Private>False</Private>
</ProjectReference>
+ <!-- FIXME we need a canonical owner for copying nunit into build\tests -->
+ <IncludeCopyLocal Include="nunit.framework.dll" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
</Project>