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
- XPathItem.cs
- DataContext.cs
- WebPartHelpVerb.cs
- TreeViewImageIndexConverter.cs
- StrokeNodeData.cs
- BCLDebug.cs
- ConnectionPoint.cs
- PeerResolver.cs
- SqlParameterizer.cs
- QueryStatement.cs
- Transactions.cs
- StringKeyFrameCollection.cs
- ConnectionManagementElement.cs
- DefaultValueTypeConverter.cs
- Ref.cs
- ListSortDescription.cs
- returneventsaver.cs
- FilterQuery.cs
- SizeChangedEventArgs.cs
- ExportException.cs
- TypedAsyncResult.cs
- HandleCollector.cs
- IISMapPath.cs
- MasterPageParser.cs
- DbSetClause.cs
- UnicastIPAddressInformationCollection.cs
- PixelShader.cs
- GlobalId.cs
- OracleDataReader.cs
- CallbackValidatorAttribute.cs
- ZoneButton.cs
- BoundingRectTracker.cs
- ContentHostHelper.cs
- BigInt.cs
- CharacterString.cs
- MergeLocalizationDirectives.cs
- FormView.cs
- IPAddressCollection.cs
- SupportingTokenAuthenticatorSpecification.cs
- _NegoState.cs
- NamespaceEmitter.cs
- OleDbErrorCollection.cs
- FlowLayoutPanel.cs
- SimpleType.cs
- FormsAuthenticationConfiguration.cs
- BaseValidator.cs
- ToolStripItemRenderEventArgs.cs
- GraphicsPath.cs
- InvalidEnumArgumentException.cs
- HtmlInputButton.cs
- XmlComment.cs
- DataConnectionHelper.cs
- EditorPartCollection.cs
- MailWebEventProvider.cs
- RequestCache.cs
- AccessKeyManager.cs
- WebPartManagerInternals.cs
- SerialStream.cs
- ToolStripSplitButton.cs
- SqlDataSourceWizardForm.cs
- SmiRecordBuffer.cs
- HtmlTitle.cs
- XmlImplementation.cs
- ObfuscationAttribute.cs
- WebPartsPersonalizationAuthorization.cs
- GetPageNumberCompletedEventArgs.cs
- UIPropertyMetadata.cs
- Parameter.cs
- MsmqIntegrationAppDomainProtocolHandler.cs
- SqlConnectionStringBuilder.cs
- _NestedSingleAsyncResult.cs
- PowerModeChangedEventArgs.cs
- ConfigurationElementProperty.cs
- MarkedHighlightComponent.cs
- Line.cs
- WriteFileContext.cs
- BitmapSizeOptions.cs
- TypeDelegator.cs
- SqlConnectionFactory.cs
- RouteItem.cs
- ApplyTemplatesAction.cs
- XmlValidatingReaderImpl.cs
- Tracking.cs
- DateTimeValueSerializer.cs
- FrameSecurityDescriptor.cs
- TextTreeRootNode.cs
- TemplateControl.cs
- Identity.cs
- XmlBoundElement.cs
- AdornedElementPlaceholder.cs
- JapaneseCalendar.cs
- ImageSourceValueSerializer.cs
- XmlQualifiedName.cs
- CryptoConfig.cs
- XPathChildIterator.cs
- TreeViewAutomationPeer.cs
- SmiGettersStream.cs
- NavigationEventArgs.cs
- SelectionRange.cs
- EnvelopedPkcs7.cs