diff --git a/src/actions/vstudio/vs2010_vcxproj.lua b/src/actions/vstudio/vs2010_vcxproj.lua index ab0d6e7b..f4465216 100644 --- a/src/actions/vstudio/vs2010_vcxproj.lua +++ b/src/actions/vstudio/vs2010_vcxproj.lua @@ -822,9 +822,20 @@ -- m.elements.projectReferences = function(prj, ref) - return { - m.projectReferenceProject, - } + if prj.flags.Managed then + return { + m.referenceProject, + m.referencePrivate, + m.referenceOutputAssembly, + m.referenceCopyLocalSatelliteAssemblies, + m.referenceLinkLibraryDependencies, + m.referenceUseLibraryDependences, + } + else + return { + m.referenceProject, + } + end end function m.projectReferences(prj) @@ -1391,11 +1402,6 @@ end - function m.projectReferenceProject(prj, ref) - p.w('{%s}', ref.uuid) - end - - function m.propertyGroup(cfg, label) local cond if cfg then @@ -1418,7 +1424,6 @@ end - function m.propertySheetGroup(prj) for cfg in project.eachconfig(prj) do m.propertySheets(cfg) @@ -1426,6 +1431,35 @@ end + function m.referenceCopyLocalSatelliteAssemblies(prj, ref) + p.w('false') + end + + + function m.referenceLinkLibraryDependencies(prj, ref) + p.w('true') + end + + + function m.referenceOutputAssembly(prj, ref) + p.w('true') + end + + + function m.referencePrivate(prj, ref) + p.w('true') + end + + + function m.referenceProject(prj, ref) + p.w('{%s}', ref.uuid) + end + + + function m.referenceUseLibraryDependences(prj, ref) + p.w('false') + end + function m.resourceAdditionalIncludeDirectories(cfg) m.additionalIncludeDirectories(cfg, table.join(cfg.includedirs, cfg.resincludedirs)) diff --git a/tests/actions/vstudio/vc2010/test_project_refs.lua b/tests/actions/vstudio/vc2010/test_project_refs.lua index 93e9ba8b..39e195e7 100644 --- a/tests/actions/vstudio/vc2010/test_project_refs.lua +++ b/tests/actions/vstudio/vc2010/test_project_refs.lua @@ -75,3 +75,25 @@ ]] end + +-- +-- Managed C++ projects write out references a little differently. +-- + + function suite.referencesAreRelative_onDifferentProjectLocation() + links { "MyProject" } + flags { "Managed" } + prepare() + test.capture [[ + + + {00112233-4455-6677-8888-99AABBCCDDEE} + true + true + false + true + false + + + ]] + end