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:
authorMatt Ward <matt.ward@xamarin.com>2017-07-20 15:32:19 +0300
committerMarius Ungureanu <teromario@yahoo.com>2017-07-20 17:52:18 +0300
commitecb218278d2a51dcabff486a117e94af85f92521 (patch)
treedc1ced62fc5a73306437fa2cf3020ad42bea0b31 /main/src/addins/MonoDevelop.Packaging
parent39e56031cf3a6401b75d9aa6ef5bf35c7e509dff (diff)
[Packaging] Make msbuild property provider thread safe
Fixed bug #58244 - Error loading project - NuGetAuthoringPath item already added https://bugzilla.xamarin.com/show_bug.cgi?id=58244 Prevent the MSBuild property NuGetAuthoringPath being added twice to the same dictionary by making the property provider thread safe.
Diffstat (limited to 'main/src/addins/MonoDevelop.Packaging')
-rw-r--r--main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging/MSBuildGlobalPropertyProvider.cs18
1 files changed, 11 insertions, 7 deletions
diff --git a/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging/MSBuildGlobalPropertyProvider.cs b/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging/MSBuildGlobalPropertyProvider.cs
index a8d71b8ddf..8d7d050b1d 100644
--- a/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging/MSBuildGlobalPropertyProvider.cs
+++ b/main/src/addins/MonoDevelop.Packaging/MonoDevelop.Packaging/MSBuildGlobalPropertyProvider.cs
@@ -33,7 +33,7 @@ namespace MonoDevelop.Packaging
{
class MSBuildGlobalPropertyProvider : IMSBuildGlobalPropertyProvider
{
- Dictionary<string, string> properties;
+ Lazy<Dictionary<string, string>> properties = new Lazy<Dictionary<string, string>> (CreateProperties);
#pragma warning disable 67
public event EventHandler GlobalPropertiesChanged;
@@ -41,13 +41,17 @@ namespace MonoDevelop.Packaging
public IDictionary<string, string> GetGlobalProperties ()
{
- if (properties == null) {
- string addinDirectory = Path.GetDirectoryName (GetType ().Assembly.Location);
- string targetsDirectory = Path.Combine (addinDirectory, "Targets");
+ return properties.Value;
+ }
+
+ static Dictionary<string, string> CreateProperties ()
+ {
+ string addinDirectory = Path.GetDirectoryName (typeof (MSBuildGlobalPropertyProvider).Assembly.Location);
+ string targetsDirectory = Path.Combine (addinDirectory, "Targets");
+
+ var properties = new Dictionary<string, string> ();
+ properties.Add ("NuGetAuthoringPath", targetsDirectory);
- properties = new Dictionary<string, string> ();
- properties.Add ("NuGetAuthoringPath", targetsDirectory);
- }
return properties;
}
}