Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / AddIn / AddIn / System / Addin / Hosting / AddInEnvironment.cs / 1305376 / AddInEnvironment.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: AddInEnvironment ** ** Purpose: Abstraction representing an AppDomain, Process and Machine ** ===========================================================*/ using System; using System.AddIn.Contract; using System.Runtime.Remoting; using System.Security; using System.Security.Permissions; using System.Diagnostics.Contracts; namespace System.AddIn.Hosting { public sealed class AddInEnvironment { private AddInProcess _process; // for in process we have an appdomain. private AppDomain _appDomain; // for out-of-process we have this. private AddInServerWorker _addInServerWorker; [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming","CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId="appDomain")] public AddInEnvironment(AppDomain appDomain) { if (appDomain == null) throw new ArgumentNullException("appDomain"); System.Diagnostics.Contracts.Contract.EndContractBlock(); if (appDomain != AppDomain.CurrentDomain && !Utils.HasFullTrust()) { throw new SecurityException(Res.PartialTrustCannotActivate); } _appDomain = appDomain; _process = AddInProcess.Current; } // This version is used when we have just created a new appdomain for this addin. [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming","CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId="appDomain")] internal AddInEnvironment(AppDomain appDomain, bool skipDomainCheck) { if (appDomain == null) throw new ArgumentNullException("appDomain"); System.Diagnostics.Contracts.Contract.EndContractBlock(); _appDomain = appDomain; _process = AddInProcess.Current; } internal AddInEnvironment(AddInProcess process, AddInServerWorker worker) { _addInServerWorker = worker; _process = process; } public AddInProcess Process { get { return _process; } } internal AppDomain AppDomain { get { return _appDomain; } } internal AddInServerWorker AddInServerWorker { get { return _addInServerWorker; } } //// [System.Security.SecuritySafeCritical] [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2129:SecurityTransparentCodeShouldNotReferenceNonpublicSecurityCriticalCode", Justification = "This is a SecurityRules.Level1 assembly, in which this rule is being incorrectly applied")] [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2128:SecurityTransparentCodeShouldNotAssert", Justification = "This is a SecurityRules.Level1 assembly, in which this rule is being incorrectly applied")] internal void UnloadAppDomain() { if (Process.IsCurrentProcess) { SecurityPermission permission = new SecurityPermission(SecurityPermissionFlag.ControlAppDomain); permission.Assert(); AppDomain.Unload(AppDomain); CodeAccessPermission.RevertAssert(); } else { try { _addInServerWorker.UnloadAppDomain(); } catch (AppDomainUnloadedException) { } catch (RemotingException) { } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: AddInEnvironment ** ** Purpose: Abstraction representing an AppDomain, Process and Machine ** ===========================================================*/ using System; using System.AddIn.Contract; using System.Runtime.Remoting; using System.Security; using System.Security.Permissions; using System.Diagnostics.Contracts; namespace System.AddIn.Hosting { public sealed class AddInEnvironment { private AddInProcess _process; // for in process we have an appdomain. private AppDomain _appDomain; // for out-of-process we have this. private AddInServerWorker _addInServerWorker; [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming","CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId="appDomain")] public AddInEnvironment(AppDomain appDomain) { if (appDomain == null) throw new ArgumentNullException("appDomain"); System.Diagnostics.Contracts.Contract.EndContractBlock(); if (appDomain != AppDomain.CurrentDomain && !Utils.HasFullTrust()) { throw new SecurityException(Res.PartialTrustCannotActivate); } _appDomain = appDomain; _process = AddInProcess.Current; } // This version is used when we have just created a new appdomain for this addin. [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming","CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId="appDomain")] internal AddInEnvironment(AppDomain appDomain, bool skipDomainCheck) { if (appDomain == null) throw new ArgumentNullException("appDomain"); System.Diagnostics.Contracts.Contract.EndContractBlock(); _appDomain = appDomain; _process = AddInProcess.Current; } internal AddInEnvironment(AddInProcess process, AddInServerWorker worker) { _addInServerWorker = worker; _process = process; } public AddInProcess Process { get { return _process; } } internal AppDomain AppDomain { get { return _appDomain; } } internal AddInServerWorker AddInServerWorker { get { return _addInServerWorker; } } //// // // [System.Security.SecuritySafeCritical] [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2129:SecurityTransparentCodeShouldNotReferenceNonpublicSecurityCriticalCode", Justification = "This is a SecurityRules.Level1 assembly, in which this rule is being incorrectly applied")] [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2128:SecurityTransparentCodeShouldNotAssert", Justification = "This is a SecurityRules.Level1 assembly, in which this rule is being incorrectly applied")] internal void UnloadAppDomain() { if (Process.IsCurrentProcess) { SecurityPermission permission = new SecurityPermission(SecurityPermissionFlag.ControlAppDomain); permission.Assert(); AppDomain.Unload(AppDomain); CodeAccessPermission.RevertAssert(); } else { try { _addInServerWorker.UnloadAppDomain(); } catch (AppDomainUnloadedException) { } catch (RemotingException) { } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.// //
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TableLayoutRowStyleCollection.cs
- DomainUpDown.cs
- TreeNodeCollection.cs
- CompressEmulationStream.cs
- FtpWebResponse.cs
- DropDownButton.cs
- XmlIncludeAttribute.cs
- ControlBuilderAttribute.cs
- Command.cs
- QueryCursorEventArgs.cs
- Vector3DCollectionConverter.cs
- ParserExtension.cs
- ConnectionManagementSection.cs
- StrokeCollectionDefaultValueFactory.cs
- FamilyTypefaceCollection.cs
- ToolStripCustomTypeDescriptor.cs
- ValueOfAction.cs
- DiscoveryMessageSequence11.cs
- ComponentResourceManager.cs
- XmlSchemaCompilationSettings.cs
- WebConfigurationManager.cs
- BooleanFacetDescriptionElement.cs
- SystemFonts.cs
- DataPagerFieldCommandEventArgs.cs
- PersonalizationStateInfoCollection.cs
- JournalEntryStack.cs
- MeasurementDCInfo.cs
- GeneralTransform3DTo2DTo3D.cs
- FullTextBreakpoint.cs
- RepeaterItemCollection.cs
- ExpressionVisitorHelpers.cs
- DynamicExpression.cs
- SerializationAttributes.cs
- BindingContext.cs
- HttpHandlerActionCollection.cs
- GeneralTransform3DTo2DTo3D.cs
- XmlWhitespace.cs
- SatelliteContractVersionAttribute.cs
- ObjectQueryState.cs
- Util.cs
- InfoCardRSAPKCS1KeyExchangeFormatter.cs
- ProvidePropertyAttribute.cs
- EventlogProvider.cs
- Viewport3DVisual.cs
- LocatorPart.cs
- PropertyTab.cs
- BatchParser.cs
- EmbeddedObject.cs
- ChannelManager.cs
- ChineseLunisolarCalendar.cs
- LoginView.cs
- ResourceProviderFactory.cs
- PeerTransportCredentialType.cs
- WindowsListViewGroup.cs
- Base64Encoding.cs
- SortDescription.cs
- TrackingProfile.cs
- TextDecorationCollection.cs
- BaseComponentEditor.cs
- Switch.cs
- TextTreeUndoUnit.cs
- GenericsInstances.cs
- EdmConstants.cs
- OdbcReferenceCollection.cs
- BrowserDefinitionCollection.cs
- FunctionDescription.cs
- DbSetClause.cs
- RangeValuePatternIdentifiers.cs
- ProfilePropertySettings.cs
- UIAgentMonitor.cs
- MatcherBuilder.cs
- SafeThemeHandle.cs
- MissingMemberException.cs
- CalendarDateRangeChangingEventArgs.cs
- Dictionary.cs
- CompiledRegexRunner.cs
- StreamSecurityUpgradeInitiatorBase.cs
- Item.cs
- XmlSerializableReader.cs
- NonceToken.cs
- ISCIIEncoding.cs
- Cell.cs
- IQueryable.cs
- XomlCompilerResults.cs
- OleDbWrapper.cs
- TextViewBase.cs
- EventQueueState.cs
- DataViewSettingCollection.cs
- SqlTrackingQuery.cs
- ProjectionPlan.cs
- Color.cs
- XmlDataDocument.cs
- TextStore.cs
- ArglessEventHandlerProxy.cs
- HtmlTable.cs
- SimpleType.cs
- TableLayoutRowStyleCollection.cs
- OpenTypeLayoutCache.cs
- CompositeDataBoundControl.cs
- IisTraceListener.cs