project-system icon indicating copy to clipboard operation
project-system copied to clipboard

Implement the remaining VsLangProj.ProjectProperties properties

Open basoundr opened this issue 8 years ago • 1 comments

With #1842 only the required properties were implemented. There are still some properties that are not used, which still needs to be implemented.

basoundr avatar Mar 27 '17 16:03 basoundr

@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 null were 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 Int32 in a few places where legacy returns UInt32 (e.g. OutputTypeEx, TargetFramework)
  • Our URL property 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.

davkean avatar Jan 20 '20 23:01 davkean