private static CSharpCompilationOptions CreateCSharpCompilationOptions() { string moduleName = null; string mainTypeName = null; string scriptClassName = null; IEnumerable <string> usings = null; OptimizationLevel optimizationLevel = OptimizationLevel.Debug; bool checkOverflow = false; bool allowUnsafe = false; string cryptoKeyContainer = null; string cryptoKeyFile = null; bool? delaySign = null; Platform platform = 0; ReportDiagnostic generalDiagnosticOption = 0; int warningLevel = 0; IEnumerable <KeyValuePair <string, ReportDiagnostic> > specificDiagnosticOptions = null; bool concurrentBuild = false; bool extendedCustomDebugInformation = true; XmlReferenceResolver xmlReferenceResolver = new XmlFileResolver(null); SourceReferenceResolver sourceReferenceResolver = new SourceFileResolver(ImmutableArray <string> .Empty, null); MetadataReferenceResolver metadataReferenceResolver = new AssemblyReferenceResolver(new MetadataFileReferenceResolver(ImmutableArray <string> .Empty, null), MetadataFileReferenceProvider.Default); AssemblyIdentityComparer assemblyIdentityComparer = AssemblyIdentityComparer.Default; // Currently uses reference equality StrongNameProvider strongNameProvider = new DesktopStrongNameProvider(); MetadataImportOptions metadataImportOptions = 0; ImmutableArray <string> features = ImmutableArray <string> .Empty; return(new CSharpCompilationOptions(OutputKind.ConsoleApplication, moduleName, mainTypeName, scriptClassName, usings, optimizationLevel, checkOverflow, allowUnsafe, cryptoKeyContainer, cryptoKeyFile, delaySign, platform, generalDiagnosticOption, warningLevel, specificDiagnosticOptions, concurrentBuild, extendedCustomDebugInformation, xmlReferenceResolver, sourceReferenceResolver, metadataReferenceResolver, assemblyIdentityComparer, strongNameProvider, metadataImportOptions, features)); }
private static CSharpCompilationOptions CreateCSharpCompilationOptions() { string moduleName = null; string mainTypeName = null; string scriptClassName = null; IEnumerable <string> usings = null; OptimizationLevel optimizationLevel = OptimizationLevel.Debug; bool checkOverflow = false; bool allowUnsafe = false; string cryptoKeyContainer = null; string cryptoKeyFile = null; ImmutableArray <byte> cryptoPublicKey = default(ImmutableArray <byte>); bool? delaySign = null; Platform platform = 0; ReportDiagnostic generalDiagnosticOption = 0; int warningLevel = 0; IEnumerable <KeyValuePair <string, ReportDiagnostic> > specificDiagnosticOptions = null; bool concurrentBuild = false; bool deterministic = false; DateTime currentLocalTime = default(DateTime); bool debugPlusMode = false; XmlReferenceResolver xmlReferenceResolver = new XmlFileResolver(null); SourceReferenceResolver sourceReferenceResolver = new SourceFileResolver(ImmutableArray <string> .Empty, null); SyntaxTreeOptionsProvider syntaxTreeOptionsProvider = null; MetadataReferenceResolver metadataReferenceResolver = new MetadataReferenceResolverWithEquality(); AssemblyIdentityComparer assemblyIdentityComparer = AssemblyIdentityComparer.Default; // Currently uses reference equality StrongNameProvider strongNameProvider = new DesktopStrongNameProvider(); MetadataImportOptions metadataImportOptions = 0; bool referencesSupersedeLowerVersions = false; bool reportSuppressedDiagnostics = false; var topLevelBinderFlags = BinderFlags.None; var publicSign = false; NullableContextOptions nullableContextOptions = NullableContextOptions.Disable; return(new CSharpCompilationOptions(OutputKind.ConsoleApplication, reportSuppressedDiagnostics, moduleName, mainTypeName, scriptClassName, usings, optimizationLevel, checkOverflow, allowUnsafe, cryptoKeyContainer, cryptoKeyFile, cryptoPublicKey, delaySign, platform, generalDiagnosticOption, warningLevel, specificDiagnosticOptions, concurrentBuild, deterministic, currentLocalTime, debugPlusMode, xmlReferenceResolver, sourceReferenceResolver, syntaxTreeOptionsProvider, metadataReferenceResolver, assemblyIdentityComparer, strongNameProvider, metadataImportOptions, referencesSupersedeLowerVersions, publicSign, topLevelBinderFlags, nullableContextOptions)); }
public CSharpCompilationOptions CreateCSharpCompilationOptions() { string moduleName = null; string mainTypeName = null; string scriptClassName = null; IEnumerable <string> usings = null; OptimizationLevel optimizationLevel = OptimizationLevel.Debug; bool checkOverflow = false; bool allowUnsafe = false; string cryptoKeyContainer = null; string cryptoKeyFile = null; bool? delaySign = null; int fileAlignment = 0; ulong baseAddress = 0; Platform platform = 0; ReportDiagnostic generalDiagnosticOption = 0; int warningLevel = 0; IEnumerable <KeyValuePair <string, ReportDiagnostic> > specificDiagnosticOptions = null; bool highEntropyVirtualAddressSpace = false; SubsystemVersion subsystemVersion = default(SubsystemVersion); string runtimeMetadataVersion = null; bool concurrentBuild = false; XmlReferenceResolver xmlReferenceResolver = new XmlFileResolver(null); SourceReferenceResolver sourceReferenceResolver = new SourceFileResolver(ImmutableArray <string> .Empty, null); MetadataReferenceResolver metadataReferenceResolver = new MetadataFileReferenceResolver(ImmutableArray <string> .Empty, null); MetadataReferenceProvider metadataReferenceProvider = MetadataFileReferenceProvider.Default; // Currently uses reference equality AssemblyIdentityComparer assemblyIdentityComparer = AssemblyIdentityComparer.Default; // Currently uses reference equality StrongNameProvider strongNameProvider = new DesktopStrongNameProvider(); MetadataImportOptions metadataImportOptions = 0; ImmutableArray <string> features = ImmutableArray <string> .Empty; return(new CSharpCompilationOptions(OutputKind.ConsoleApplication, moduleName, mainTypeName, scriptClassName, usings, optimizationLevel, checkOverflow, allowUnsafe, cryptoKeyContainer, cryptoKeyFile, delaySign, fileAlignment, baseAddress, platform, generalDiagnosticOption, warningLevel, specificDiagnosticOptions, highEntropyVirtualAddressSpace, subsystemVersion, runtimeMetadataVersion, concurrentBuild, xmlReferenceResolver, sourceReferenceResolver, metadataReferenceResolver, metadataReferenceProvider, assemblyIdentityComparer, strongNameProvider, metadataImportOptions, features)); }
public void PermissionSetAttribute_Fixup() { var tempDir = Temp.CreateDirectory(); var tempFile = tempDir.CreateFile("pset.xml"); string text = @" <PermissionSet class=""System.Security.PermissionSet"" version=""1""> <Permission class=""System.Security.Permissions.FileIOPermission, mscorlib"" version=""1""><AllWindows/></Permission> <Permission class=""System.Security.Permissions.RegistryPermission, mscorlib"" version=""1""><Unrestricted/></Permission> </PermissionSet>"; tempFile.WriteAllText(text); string hexFileContent = PermissionSetAttributeWithFileReference.ConvertToHex(new MemoryStream(Encoding.UTF8.GetBytes(text))); string source = @" using System.Security.Permissions; [PermissionSetAttribute(SecurityAction.Deny, File = @""pset.xml"")] public class MyClass { public static void Main() { typeof(MyClass).GetCustomAttributes(false); } }"; var syntaxTree = Parse(source); var resolver = new XmlFileResolver(tempDir.Path); var compilation = CSharpCompilation.Create( GetUniqueName(), new[] { syntaxTree }, new[] { MscorlibRef }, TestOptions.Dll.WithXmlReferenceResolver(resolver)); compilation.VerifyDiagnostics( // (4,25): warning CS0618: 'System.Security.Permissions.SecurityAction.Deny' is obsolete: 'Deny is obsolete and will be removed in a future release of the .NET Framework. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.' // [PermissionSetAttribute(SecurityAction.Deny, File = @"pset.xml")] Diagnostic(ErrorCode.WRN_DeprecatedSymbolStr, "SecurityAction.Deny").WithArguments("System.Security.Permissions.SecurityAction.Deny", "Deny is obsolete and will be removed in a future release of the .NET Framework. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")); ValidateDeclSecurity(compilation, new DeclSecurityEntry { ActionFlags = DeclarativeSecurityAction.Deny, ParentKind = SymbolKind.NamedType, ParentNameOpt = @"MyClass", PermissionSet = "." + // always start with a dot "\u0001" + // number of attributes (small enough to fit in 1 byte) "\u007f" + // length of string "System.Security.Permissions.PermissionSetAttribute, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" + // attr type name "\u0082" + "\u008f" + // number of bytes in the encoding of the named arguments "\u0001" + // number of named arguments "\u0054" + // property (vs field) "\u000e" + // type string "\u0003" + // length of string (small enough to fit in 1 byte) "Hex" + // property name "\u0082" + "\u0086" + // length of string hexFileContent // argument value }); }
public void IncludeFileResolution() { var xml1 = @" <root> <include file=""test.xml"" path=""//element""/> <!--relative to d1 --> <include file=""d2/test.xml"" path=""//include""/> <!-- relative to root --> <element value=""1""/> </root> "; var xml2 = @" <root> <include file=""test.xml"" path=""//element""/> <!--relative to d2 --> <include file=""d3/test.xml"" path=""//include""/> <!-- relative to root --> <element value=""2""/> </root> "; var xml3 = @" <root> <include file=""test.xml"" path=""//element""/> <!--relative to d3 --> <element value=""3""/> </root> "; var rootDir = Temp.CreateDirectory(); var dir1 = rootDir.CreateDirectory("d1"); var dir1XmlFile = dir1.CreateFile("test.xml").WriteAllText(xml1); var dir2 = rootDir.CreateDirectory("d2"); var dir2XmlFile = dir2.CreateFile("test.xml").WriteAllText(xml2); var dir3 = rootDir.CreateDirectory("d3"); var dir3XmlFile = dir3.CreateFile("test.xml").WriteAllText(xml3); var source = @" /// <include file='d1\test.xml' path='//include' /> class C { } "; var tree = Parse(source, options: TestOptions.RegularWithDocumentationComments); var resolver = new XmlFileResolver(rootDir.Path); var comp = CSharpCompilation.Create("Test", new[] { tree }, new[] { MscorlibRef }, TestOptions.ReleaseDll.WithXmlReferenceResolver(resolver)); var actual = GetDocumentationCommentText(comp); var expected = (@" <?xml version=""1.0""?> <doc> <assembly> <name>Test</name> </assembly> <members> <member name=""T:C""> <element value=""1"" /><element value=""2"" /><element value=""3"" /> </member> </members> </doc> ").Trim(); Assert.Equal(expected, actual); }