|  | @@ -483,23 +483,33 @@ void cmVisualStudio10TargetGenerator::Generate()
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |        e1.Element("ProjectName", projLabel);
 | 
	
		
			
				|  |  |        {
 | 
	
		
			
				|  |  | -        // TODO: add deprecation warning for VS_* property?
 | 
	
		
			
				|  |  | -        const char* targetFrameworkVersion =
 | 
	
		
			
				|  |  | -          this->GeneratorTarget->GetProperty(
 | 
	
		
			
				|  |  | -            "VS_DOTNET_TARGET_FRAMEWORK_VERSION");
 | 
	
		
			
				|  |  | -        if (!targetFrameworkVersion) {
 | 
	
		
			
				|  |  | -          targetFrameworkVersion = this->GeneratorTarget->GetProperty(
 | 
	
		
			
				|  |  | -            "DOTNET_TARGET_FRAMEWORK_VERSION");
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        if (!targetFrameworkVersion && this->ProjectType == csproj &&
 | 
	
		
			
				|  |  | -            this->GlobalGenerator->TargetsWindowsCE() &&
 | 
	
		
			
				|  |  | -            this->GlobalGenerator->GetVersion() ==
 | 
	
		
			
				|  |  | -              cmGlobalVisualStudioGenerator::VS12) {
 | 
	
		
			
				|  |  | -          // VS12 .NETCF default to .NET framework 3.9
 | 
	
		
			
				|  |  | -          targetFrameworkVersion = "v3.9";
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        if (targetFrameworkVersion) {
 | 
	
		
			
				|  |  | -          e1.Element("TargetFrameworkVersion", targetFrameworkVersion);
 | 
	
		
			
				|  |  | +        const char* targetFramework =
 | 
	
		
			
				|  |  | +          this->GeneratorTarget->GetProperty("DOTNET_TARGET_FRAMEWORK");
 | 
	
		
			
				|  |  | +        if (targetFramework) {
 | 
	
		
			
				|  |  | +          if (std::strchr(targetFramework, ';') != nullptr) {
 | 
	
		
			
				|  |  | +            e1.Element("TargetFrameworks", targetFramework);
 | 
	
		
			
				|  |  | +          } else {
 | 
	
		
			
				|  |  | +            e1.Element("TargetFramework", targetFramework);
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +          // TODO: add deprecation warning for VS_* property?
 | 
	
		
			
				|  |  | +          const char* targetFrameworkVersion =
 | 
	
		
			
				|  |  | +            this->GeneratorTarget->GetProperty(
 | 
	
		
			
				|  |  | +              "VS_DOTNET_TARGET_FRAMEWORK_VERSION");
 | 
	
		
			
				|  |  | +          if (!targetFrameworkVersion) {
 | 
	
		
			
				|  |  | +            targetFrameworkVersion = this->GeneratorTarget->GetProperty(
 | 
	
		
			
				|  |  | +              "DOTNET_TARGET_FRAMEWORK_VERSION");
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +          if (!targetFrameworkVersion && this->ProjectType == csproj &&
 | 
	
		
			
				|  |  | +              this->GlobalGenerator->TargetsWindowsCE() &&
 | 
	
		
			
				|  |  | +              this->GlobalGenerator->GetVersion() ==
 | 
	
		
			
				|  |  | +                cmGlobalVisualStudioGenerator::VS12) {
 | 
	
		
			
				|  |  | +            // VS12 .NETCF default to .NET framework 3.9
 | 
	
		
			
				|  |  | +            targetFrameworkVersion = "v3.9";
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +          if (targetFrameworkVersion) {
 | 
	
		
			
				|  |  | +            e1.Element("TargetFrameworkVersion", targetFrameworkVersion);
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          if (this->ProjectType == vcxproj &&
 | 
	
		
			
				|  |  |              this->GlobalGenerator->TargetsWindowsCE()) {
 | 
	
	
		
			
				|  | @@ -4110,6 +4120,9 @@ void cmVisualStudio10TargetGenerator::WriteProjectReferences(Elem& e0)
 | 
	
		
			
				|  |  |      e2.Element("Project", "{" + this->GlobalGenerator->GetGUID(name) + "}");
 | 
	
		
			
				|  |  |      e2.Element("Name", name);
 | 
	
		
			
				|  |  |      this->WriteDotNetReferenceCustomTags(e2, name);
 | 
	
		
			
				|  |  | +    if (dt->IsCSharpOnly() || cmHasLiteralSuffix(path, "csproj")) {
 | 
	
		
			
				|  |  | +      e2.Element("SkipGetTargetFrameworkProperties", "true");
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      // Don't reference targets that don't produce any output.
 | 
	
		
			
				|  |  |      if (dt->GetManagedType("") == cmGeneratorTarget::ManagedType::Undefined) {
 |