project-system
project-system copied to clipboard
Implement the remaining VsLangProj.ProjectProperties properties
With #1842 only the required properties were implemented. There are still some properties that are not used, which still needs to be implemented.
@drewnoakes mentioned:
I started an integration test to compare the DTE view of roughly equivalent legacy and SDK-style projects and found the following differences in project properties:
⚠ ActiveFileSharePath:
legacy: null
project: ""
✔ ApplicationIcon: ""
⚠ ApplicationManifest:
legacy: null
project: "DefaultManifest"
⚠ AspnetVersion:
legacy: null
project: ""
✔ AssemblyFileVersion: ""
✔ AssemblyGuid: ""
✔ AssemblyKeyContainerName: ""
✔ AssemblyKeyProviderName: ""
❌ AssemblyName:
legacy: "LegacyProject_5c82a068fa59"
project: "Project_81fd87f45f4a"
✔ AssemblyOriginatorKeyFile: ""
❌ AssemblyOriginatorKeyFileType:
legacy: 1 (uint)
project: ""
❌ AssemblyOriginatorKeyMode:
legacy: 0 (int)
project: ""
❌ AssemblyType:
legacy: 0 (int)
project: ""
❌ AssemblyVersion:
legacy: ""
project: "1.0.0.0"
⚠ Authors:
legacy: null
project: "Project_81fd87f45f4a"
✔ AutoGenerateBindingRedirects: true
✔ CanUseTargetFSharpCoreVersion: null
❌ Company:
legacy: ""
project: "Project_81fd87f45f4a"
❌ ComVisible:
legacy: true
project: ""
✔ Copyright: ""
✔ DebugSecurityZoneURL: ""
❌ DefaultClientScript:
legacy: 0 (int)
project: ""
❌ DefaultHTMLPageLayout:
legacy: 1 (int)
project: ""
❌ DefaultNamespace:
legacy: "LegacyProject_5c82a068fa59"
project: "Project_81fd87f45f4a"
❌ DefaultTargetSchema:
legacy: 1 (int)
project: ""
❌ DelaySign:
legacy: false
project: null
✔ Description: ""
❌ EnableSecurityDebugging:
legacy: true
project: ""
✔ ExcludedPermissions: ""
❌ FileName:
legacy: "LegacyProject_5c82a068fa59.csproj"
project: "Project_81fd87f45f4a.csproj"
⚠ FileSharePath:
legacy: null
project: ""
⚠ FileVersion:
legacy: null
project: "1.0.0.0"
❌ FullPath:
legacy: "C:\Users\drnoakes\AppData\Local\Temp\IntegrationTest_1a0a3785f6bf\LegacyProject_5c82a068fa59\"
project: "C:\Users\drnoakes\AppData\Local\Temp\IntegrationTest_1a0a3785f6bf\Project_81fd87f45f4a\"
⚠ FullProjectFileName:
legacy: null
project: "C:\Users\drnoakes\AppData\Local\Temp\IntegrationTest_1a0a3785f6bf\Project_81fd87f45f4a\Project_81fd87f45f4a.csproj"
❌ GenerateManifests:
legacy: false
project: ""
⚠ GeneratePackageOnBuild:
legacy: null
project: false
❌ LinkRepair:
legacy: false
project: ""
❌ LocalPath:
legacy: "C:\Users\drnoakes\AppData\Local\Temp\IntegrationTest_1a0a3785f6bf\LegacyProject_5c82a068fa59\"
project: "C:\Users\drnoakes\AppData\Local\Temp\IntegrationTest_1a0a3785f6bf\Project_81fd87f45f4a"
✔ ManifestCertificateThumbprint: ""
✔ ManifestKeyFile: ""
✔ ManifestTimestampUrl: ""
⚠ MyType:
legacy: null
project: ""
⚠ Name:
legacy: null
project: ""
⚠ NeutralLanguage:
legacy: null
project: ""
✔ NeutralResourcesLanguage: ""
⚠ OfflineURL:
legacy: null
project: ""
❌ OptionCompare:
legacy: 0 (int)
project: ""
❌ OptionExplicit:
legacy: 1 (int)
project: ""
❌ OptionStrict:
legacy: 0 (int)
project: ""
❌ OutputFileName:
legacy: "LegacyProject_5c82a068fa59.dll"
project: "Project_81fd87f45f4a.dll"
⚠ OutputName:
legacy: null
project: ""
✔ OutputType: 2 (int)
❌ OutputTypeEx:
legacy: 2 (uint)
project: 2 (int)
⚠ PackageIconUrl:
legacy: null
project: ""
⚠ PackageId:
legacy: null
project: "Project_81fd87f45f4a"
⚠ PackageLicenseExpression:
legacy: null
project: ""
⚠ PackageLicenseFile:
legacy: null
project: ""
⚠ PackageLicenseUrl:
legacy: null
project: ""
⚠ PackageProjectUrl:
legacy: null
project: ""
⚠ PackageReleaseNotes:
legacy: null
project: ""
⚠ PackageRequireLicenseAcceptance:
legacy: null
project: false
⚠ PackageTags:
legacy: null
project: ""
❌ PostBuildEvent:
legacy: ""
project: null
❌ PreBuildEvent:
legacy: ""
project: null
❌ Product:
legacy: ""
project: "Project_81fd87f45f4a"
❌ ProjectType:
legacy: 0 (int)
project: ""
❌ Publish:
legacy: System.__ComObject (__ComObject)
project: ""
✔ ReferencePath: ""
⚠ RepositoryType:
legacy: null
project: ""
⚠ RepositoryUrl:
legacy: null
project: ""
❌ RootNamespace:
legacy: "LegacyProject_5c82a068fa59"
project: "Project_81fd87f45f4a"
⚠ RunAnalyzersDuringBuild:
legacy: null
project: true
⚠ RunAnalyzersDuringLiveAnalysis:
legacy: null
project: true
❌ RunPostBuildEvent:
legacy: 1 (int)
project: null
⚠ ServerExtensionsVersion:
legacy: null
project: ""
✔ SignAssembly: false
❌ SignManifests:
legacy: false
project: ""
✔ StartupObject: ""
✔ SupportedTargetFrameworks: null
❌ TargetFramework:
legacy: 262663 (uint)
project: 262151 (int)
✔ TargetFrameworkMoniker: ".NETFramework,Version=v4.7.2"
⚠ TargetFrameworkMonikers:
legacy: null
project: ".NETFramework,Version=v4.7.2"
⚠ TargetFrameworks:
legacy: null
project: "net472"
⚠ TargetFSharpCoreVersion:
legacy: null
project: ""
✔ TargetZone: ""
✔ Title: ""
✔ Trademark: ""
❌ TypeComplianceDiagnostics:
legacy: false
project: ""
❌ URL:
legacy: "file:///C:\Users\drnoakes\AppData\Local\Temp\IntegrationTest_1a0a3785f6bf\LegacyProject_5c82a068fa59\"
project: "C:\Users\drnoakes\AppData\Local\Temp\IntegrationTest_1a0a3785f6bf\Project_81fd87f45f4a\Project_81fd87f45f4a.csproj"
⚠ Version:
legacy: null
project: "1.0.0"
⚠ WebAccessMethod:
legacy: null
project: ""
⚠ WebServer:
legacy: null
project: ""
⚠ WebServerVersion:
legacy: null
project: ""
✔ Win32ResourceFile: ""
- Properties marked ⚠ are not present in legacy, so probably don't factor in when considering parity.
- Values shown as
nullwere either not present or threw when queried. - Some of the ❌ are expected to differ, such as
AssemblyName. Not all ❌ above will require work to reach parity. This is just a starting point. - We return
Int32in a few places where legacy returnsUInt32(e.g.OutputTypeEx,TargetFramework) - Our
URLproperty value is not a valid URL (legacy's is)
Looking at this list and thinking about having an integration test for these DTE values, we'll probably want to restrict the properties we test to a known list in the test.