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
- ImageBrush.cs
- CompositionAdorner.cs
- NativeMethods.cs
- RSAOAEPKeyExchangeFormatter.cs
- TypeResolver.cs
- NameGenerator.cs
- ValueConversionAttribute.cs
- WebBrowserContainer.cs
- XamlSerializerUtil.cs
- DrawingAttributesDefaultValueFactory.cs
- ManagedWndProcTracker.cs
- SystemInfo.cs
- Context.cs
- TextTreeTextNode.cs
- SpellerStatusTable.cs
- EntityDesignerBuildProvider.cs
- ProgressBarAutomationPeer.cs
- MetabaseServerConfig.cs
- EntitySqlQueryState.cs
- SelectionListDesigner.cs
- EncryptedPackageFilter.cs
- XsltQilFactory.cs
- WebControlToolBoxItem.cs
- TextEndOfSegment.cs
- UserPreferenceChangedEventArgs.cs
- GenericIdentity.cs
- PostBackOptions.cs
- WrappedDispatcherException.cs
- KnownIds.cs
- ObjectDataSourceStatusEventArgs.cs
- Attachment.cs
- RadioButtonList.cs
- IsolatedStoragePermission.cs
- Int32CollectionConverter.cs
- XPathNodePointer.cs
- SoapElementAttribute.cs
- diagnosticsswitches.cs
- AuthenticationService.cs
- PageBreakRecord.cs
- ExpressionStringBuilder.cs
- ConfigurationPropertyAttribute.cs
- SimpleBitVector32.cs
- Configuration.cs
- ListBoxChrome.cs
- UidPropertyAttribute.cs
- FileInfo.cs
- LinkArea.cs
- MembershipUser.cs
- WindowsSlider.cs
- SafeEventLogWriteHandle.cs
- FlowSwitch.cs
- SystemIPInterfaceStatistics.cs
- FixedElement.cs
- CompiledQueryCacheEntry.cs
- QueryStack.cs
- RegularExpressionValidator.cs
- XmlNamedNodeMap.cs
- FrameSecurityDescriptor.cs
- ReachBasicContext.cs
- SqlInternalConnectionSmi.cs
- InvokeWebServiceDesigner.cs
- NativeCompoundFileAPIs.cs
- GlobalizationAssembly.cs
- ImageSource.cs
- ResourceExpressionBuilder.cs
- KnownBoxes.cs
- PenContexts.cs
- XmlUtf8RawTextWriter.cs
- BitmapEffectInput.cs
- ContainerActivationHelper.cs
- HttpChannelBindingToken.cs
- SqlStatistics.cs
- WebPartTracker.cs
- IconConverter.cs
- ProfileParameter.cs
- ClosableStream.cs
- Hyperlink.cs
- Popup.cs
- SqlTypeConverter.cs
- XmlDictionaryWriter.cs
- ObservableCollection.cs
- TraceUtility.cs
- DecimalAnimation.cs
- GridViewRowCollection.cs
- GifBitmapDecoder.cs
- WorkerRequest.cs
- MarkedHighlightComponent.cs
- SecurityUtils.cs
- SymbolTable.cs
- _NestedMultipleAsyncResult.cs
- UriTemplateMatchException.cs
- ProcessingInstructionAction.cs
- RoleService.cs
- LinqDataSourceDisposeEventArgs.cs
- DefaultDiscoveryServiceExtension.cs
- NamespaceDecl.cs
- IListConverters.cs
- SafeThreadHandle.cs
- XmlUnspecifiedAttribute.cs
- DeferredSelectedIndexReference.cs