diff options
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> |