diff options
author | Matt Ward <matt.ward@xamarin.com> | 2017-07-20 15:32:19 +0300 |
---|---|---|
committer | Marius Ungureanu <teromario@yahoo.com> | 2017-07-20 17:52:18 +0300 |
commit | ecb218278d2a51dcabff486a117e94af85f92521 (patch) | |
tree | dc1ced62fc5a73306437fa2cf3020ad42bea0b31 /main/src/addins/MonoDevelop.Packaging | |
parent | 39e56031cf3a6401b75d9aa6ef5bf35c7e509dff (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.cs | 18 |
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; } } |