We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
[question] How to not include some libs in conanbuildinfo.props
Conan version 1.19.0

I have a dependency on boost (boost/1.71.0@conan/stable).

I'm using the visual_studio generator with VS2017

This adds *all* of the boost libs to conanbuildinfo.props which causes my build to fail.  I don't completely understand why this used to be OK with 1.68 and now fails with that too after moving my cache to a different drive (perhaps it was due to installing vs2019 alongside vs2017). 

But regardless it would be good if I could either cherrypick which libs to include or remove specific ones from the list.

For example I don't want to include any of the stacktrace libs which result in duplicate symbols.

I can't figure out how to do it.  If I specify any of the 'without_xxx' options then it rebuilds the whole of the boost dependency which I would rather avoid - I just want to control which libs it puts in the vs props file!

I was trying to see if there was some place I could remove them from deps_cpp_info but it doesn't look like there is a place to put that (i.e. an event just before the generators are run).

Perhaps overriding the generator could do the trick but it seems like that would be a bit of a sledgehammer and not all that clean.




--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `conans/client/generators/visualstudio.py`
Content:
```
1 import os
2 import re
3 
4 from conans.model import Generator
5 from conans.paths import BUILD_INFO_VISUAL_STUDIO
6 from conans.client.tools.files import VALID_LIB_EXTENSIONS
7 
8 
9 class VisualStudioGenerator(Generator):
10 
11     template = '''<?xml version="1.0" encoding="utf-8"?>
12 <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
13   <ImportGroup Label="PropertySheets" />
14   <PropertyGroup Label="UserMacros" />
15   <PropertyGroup Label="Conan-RootDirs">{item_properties}
16   </PropertyGroup>
17   {properties}
18   <ItemGroup />
19 </Project>'''
20 
21     properties_template = '''  <PropertyGroup Label="ConanVariables"{condition}>
22     <ConanCompilerFlags>{compiler_flags}</ConanCompilerFlags>
23     <ConanPreprocessorDefinitions>{definitions}</ConanPreprocessorDefinitions>
24     <ConanIncludeDirectories>{include_dirs}</ConanIncludeDirectories>
25     <ConanResourceDirectories>{res_dirs}</ConanResourceDirectories>
26     <ConanLibraryDirectories>{lib_dirs}</ConanLibraryDirectories>
27     <ConanBinaryDirectories>{bin_dirs}</ConanBinaryDirectories>
28   </PropertyGroup>
29   <PropertyGroup{condition}>
30     <LocalDebuggerEnvironment>PATH=%PATH%;{bin_dirs}</LocalDebuggerEnvironment>
31     <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
32   </PropertyGroup>
33   <ItemDefinitionGroup{condition}>
34     <ClCompile>
35       <AdditionalIncludeDirectories>$(ConanIncludeDirectories)%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
36       <PreprocessorDefinitions>$(ConanPreprocessorDefinitions)%(PreprocessorDefinitions)</PreprocessorDefinitions>
37       <AdditionalOptions>$(ConanCompilerFlags) %(AdditionalOptions)</AdditionalOptions>
38     </ClCompile>
39     <Link>
40       <AdditionalLibraryDirectories>$(ConanLibraryDirectories)%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
41       <AdditionalDependencies>{libs}%(AdditionalDependencies)</AdditionalDependencies>
42       <AdditionalOptions>{linker_flags} %(AdditionalOptions)</AdditionalOptions>
43     </Link>
44     <Lib>
45       <AdditionalLibraryDirectories>$(ConanLibraryDirectories)%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
46       <AdditionalDependencies>{libs}%(AdditionalDependencies)</AdditionalDependencies>
47     </Lib>
48     <Midl>
49       <AdditionalIncludeDirectories>$(ConanIncludeDirectories)%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
50     </Midl>
51     <ResourceCompile>
52       <AdditionalIncludeDirectories>$(ConanIncludeDirectories)%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
53       <PreprocessorDefinitions>$(ConanPreprocessorDefinitions)%(PreprocessorDefinitions)</PreprocessorDefinitions>
54       <AdditionalOptions>$(ConanCompilerFlags) %(AdditionalOptions)</AdditionalOptions>
55     </ResourceCompile>
56   </ItemDefinitionGroup>'''
57 
58     item_template = '''
59     <Conan-{name}-Root>{root_dir}</Conan-{name}-Root>'''
60 
61     def _format_items(self):
62         sections = []
63         for dep_name, cpp_info in self._deps_build_info.dependencies:
64             fields = {
65                 'root_dir': cpp_info.rootpath,
66                 'name': dep_name.replace(".", "-")
67             }
68             section = self.item_template.format(**fields)
69             sections.append(section)
70         return "".join(sections)
71 
72     @property
73     def filename(self):
74         return BUILD_INFO_VISUAL_STUDIO
75 
76     def _format_properties(self, build_info, condition):
77         def has_valid_ext(lib):
78             ext = os.path.splitext(lib)[1]
79             return ext in VALID_LIB_EXTENSIONS
80 
81         fields = {
82             'condition': condition,
83             'bin_dirs': "".join("%s;" % p for p in build_info.bin_paths),
84             'res_dirs': "".join("%s;" % p for p in build_info.res_paths),
85             'include_dirs': "".join("%s;" % p for p in build_info.include_paths),
86             'lib_dirs': "".join("%s;" % p for p in build_info.lib_paths),
87             'libs': "".join(['%s.lib;' % lib if not has_valid_ext(lib)
88                              else '%s;' % lib for lib in build_info.libs]),
89             'definitions': "".join("%s;" % d for d in build_info.defines),
90             'compiler_flags': " ".join(build_info.cxxflags + build_info.cflags),
91             'linker_flags': " ".join(build_info.sharedlinkflags),
92             'exe_flags': " ".join(build_info.exelinkflags)
93         }
94         formatted_template = self.properties_template.format(**fields)
95         return formatted_template
96 
97     @property
98     def content(self):
99         per_item_props = self._format_items()
100 
101         properties = [self._format_properties(self._deps_build_info, condition='')]
102         for config, cpp_info in self._deps_build_info.configs.items():
103             condition = " Condition=\"'$(Configuration)' == '%s'\"" % config
104             properties.append(self._format_properties(cpp_info, condition=condition))
105 
106         fields = {
107             'item_properties': per_item_props,
108             'properties': '\n'.join(properties)
109         }
110         formatted_template = self.template.format(**fields)
111 
112         userprofile = os.getenv("USERPROFILE")
113         if userprofile:
114             userprofile = userprofile.replace("\\", "\\\\")
115             formatted_template = re.sub(userprofile, "$(USERPROFILE)", formatted_template,
116                                         flags=re.I)
117         return formatted_template
118
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/conans/client/generators/visualstudio.py b/conans/client/generators/visualstudio.py
--- a/conans/client/generators/visualstudio.py
+++ b/conans/client/generators/visualstudio.py
@@ -18,13 +18,15 @@
   <ItemGroup />
 </Project>'''
 
-    properties_template = '''  <PropertyGroup Label="ConanVariables"{condition}>
+    properties_template = '''<PropertyGroup Label="ConanVariables"{condition}>
     <ConanCompilerFlags>{compiler_flags}</ConanCompilerFlags>
+    <ConanLinkerFlags>{linker_flags}</ConanLinkerFlags>
     <ConanPreprocessorDefinitions>{definitions}</ConanPreprocessorDefinitions>
     <ConanIncludeDirectories>{include_dirs}</ConanIncludeDirectories>
     <ConanResourceDirectories>{res_dirs}</ConanResourceDirectories>
     <ConanLibraryDirectories>{lib_dirs}</ConanLibraryDirectories>
     <ConanBinaryDirectories>{bin_dirs}</ConanBinaryDirectories>
+    <ConanLibraries>{libs}</ConanLibraries>
   </PropertyGroup>
   <PropertyGroup{condition}>
     <LocalDebuggerEnvironment>PATH=%PATH%;{bin_dirs}</LocalDebuggerEnvironment>
@@ -38,13 +40,9 @@
     </ClCompile>
     <Link>
       <AdditionalLibraryDirectories>$(ConanLibraryDirectories)%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalDependencies>{libs}%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalOptions>{linker_flags} %(AdditionalOptions)</AdditionalOptions>
+      <AdditionalDependencies>$(ConanLibraries)%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalOptions>$(ConanLinkerFlags) %(AdditionalOptions)</AdditionalOptions>
     </Link>
-    <Lib>
-      <AdditionalLibraryDirectories>$(ConanLibraryDirectories)%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalDependencies>{libs}%(AdditionalDependencies)</AdditionalDependencies>
-    </Lib>
     <Midl>
       <AdditionalIncludeDirectories>$(ConanIncludeDirectories)%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </Midl>

{"golden_diff": "diff --git a/conans/client/generators/visualstudio.py b/conans/client/generators/visualstudio.py\n--- a/conans/client/generators/visualstudio.py\n+++ b/conans/client/generators/visualstudio.py\n@@ -18,13 +18,15 @@\n   <ItemGroup />\n </Project>'''\n \n-    properties_template = '''  <PropertyGroup Label=\"ConanVariables\"{condition}>\n+    properties_template = '''<PropertyGroup Label=\"ConanVariables\"{condition}>\n     <ConanCompilerFlags>{compiler_flags}</ConanCompilerFlags>\n+    <ConanLinkerFlags>{linker_flags}</ConanLinkerFlags>\n     <ConanPreprocessorDefinitions>{definitions}</ConanPreprocessorDefinitions>\n     <ConanIncludeDirectories>{include_dirs}</ConanIncludeDirectories>\n     <ConanResourceDirectories>{res_dirs}</ConanResourceDirectories>\n     <ConanLibraryDirectories>{lib_dirs}</ConanLibraryDirectories>\n     <ConanBinaryDirectories>{bin_dirs}</ConanBinaryDirectories>\n+    <ConanLibraries>{libs}</ConanLibraries>\n   </PropertyGroup>\n   <PropertyGroup{condition}>\n     <LocalDebuggerEnvironment>PATH=%PATH%;{bin_dirs}</LocalDebuggerEnvironment>\n@@ -38,13 +40,9 @@\n     </ClCompile>\n     <Link>\n       <AdditionalLibraryDirectories>$(ConanLibraryDirectories)%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\n-      <AdditionalDependencies>{libs}%(AdditionalDependencies)</AdditionalDependencies>\n-      <AdditionalOptions>{linker_flags} %(AdditionalOptions)</AdditionalOptions>\n+      <AdditionalDependencies>$(ConanLibraries)%(AdditionalDependencies)</AdditionalDependencies>\n+      <AdditionalOptions>$(ConanLinkerFlags) %(AdditionalOptions)</AdditionalOptions>\n     </Link>\n-    <Lib>\n-      <AdditionalLibraryDirectories>$(ConanLibraryDirectories)%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\n-      <AdditionalDependencies>{libs}%(AdditionalDependencies)</AdditionalDependencies>\n-    </Lib>\n     <Midl>\n       <AdditionalIncludeDirectories>$(ConanIncludeDirectories)%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\n     </Midl>\n", "issue": "[question] How to not include some libs in conanbuildinfo.props\nConan version 1.19.0\r\n\r\nI have a dependency on boost (boost/1.71.0@conan/stable).\r\n\r\nI'm using the visual_studio generator with VS2017\r\n\r\nThis adds *all* of the boost libs to conanbuildinfo.props which causes my build to fail.  I don't completely understand why this used to be OK with 1.68 and now fails with that too after moving my cache to a different drive (perhaps it was due to installing vs2019 alongside vs2017). \r\n\r\nBut regardless it would be good if I could either cherrypick which libs to include or remove specific ones from the list.\r\n\r\nFor example I don't want to include any of the stacktrace libs which result in duplicate symbols.\r\n\r\nI can't figure out how to do it.  If I specify any of the 'without_xxx' options then it rebuilds the whole of the boost dependency which I would rather avoid - I just want to control which libs it puts in the vs props file!\r\n\r\nI was trying to see if there was some place I could remove them from deps_cpp_info but it doesn't look like there is a place to put that (i.e. an event just before the generators are run).\r\n\r\nPerhaps overriding the generator could do the trick but it seems like that would be a bit of a sledgehammer and not all that clean.\r\n\r\n\r\n\n", "before_files": [{"content": "import os\nimport re\n\nfrom conans.model import Generator\nfrom conans.paths import BUILD_INFO_VISUAL_STUDIO\nfrom conans.client.tools.files import VALID_LIB_EXTENSIONS\n\n\nclass VisualStudioGenerator(Generator):\n\n    template = '''<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <ImportGroup Label=\"PropertySheets\" />\n  <PropertyGroup Label=\"UserMacros\" />\n  <PropertyGroup Label=\"Conan-RootDirs\">{item_properties}\n  </PropertyGroup>\n  {properties}\n  <ItemGroup />\n</Project>'''\n\n    properties_template = '''  <PropertyGroup Label=\"ConanVariables\"{condition}>\n    <ConanCompilerFlags>{compiler_flags}</ConanCompilerFlags>\n    <ConanPreprocessorDefinitions>{definitions}</ConanPreprocessorDefinitions>\n    <ConanIncludeDirectories>{include_dirs}</ConanIncludeDirectories>\n    <ConanResourceDirectories>{res_dirs}</ConanResourceDirectories>\n    <ConanLibraryDirectories>{lib_dirs}</ConanLibraryDirectories>\n    <ConanBinaryDirectories>{bin_dirs}</ConanBinaryDirectories>\n  </PropertyGroup>\n  <PropertyGroup{condition}>\n    <LocalDebuggerEnvironment>PATH=%PATH%;{bin_dirs}</LocalDebuggerEnvironment>\n    <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>\n  </PropertyGroup>\n  <ItemDefinitionGroup{condition}>\n    <ClCompile>\n      <AdditionalIncludeDirectories>$(ConanIncludeDirectories)%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\n      <PreprocessorDefinitions>$(ConanPreprocessorDefinitions)%(PreprocessorDefinitions)</PreprocessorDefinitions>\n      <AdditionalOptions>$(ConanCompilerFlags) %(AdditionalOptions)</AdditionalOptions>\n    </ClCompile>\n    <Link>\n      <AdditionalLibraryDirectories>$(ConanLibraryDirectories)%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\n      <AdditionalDependencies>{libs}%(AdditionalDependencies)</AdditionalDependencies>\n      <AdditionalOptions>{linker_flags} %(AdditionalOptions)</AdditionalOptions>\n    </Link>\n    <Lib>\n      <AdditionalLibraryDirectories>$(ConanLibraryDirectories)%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\n      <AdditionalDependencies>{libs}%(AdditionalDependencies)</AdditionalDependencies>\n    </Lib>\n    <Midl>\n      <AdditionalIncludeDirectories>$(ConanIncludeDirectories)%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\n    </Midl>\n    <ResourceCompile>\n      <AdditionalIncludeDirectories>$(ConanIncludeDirectories)%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\n      <PreprocessorDefinitions>$(ConanPreprocessorDefinitions)%(PreprocessorDefinitions)</PreprocessorDefinitions>\n      <AdditionalOptions>$(ConanCompilerFlags) %(AdditionalOptions)</AdditionalOptions>\n    </ResourceCompile>\n  </ItemDefinitionGroup>'''\n\n    item_template = '''\n    <Conan-{name}-Root>{root_dir}</Conan-{name}-Root>'''\n\n    def _format_items(self):\n        sections = []\n        for dep_name, cpp_info in self._deps_build_info.dependencies:\n            fields = {\n                'root_dir': cpp_info.rootpath,\n                'name': dep_name.replace(\".\", \"-\")\n            }\n            section = self.item_template.format(**fields)\n            sections.append(section)\n        return \"\".join(sections)\n\n    @property\n    def filename(self):\n        return BUILD_INFO_VISUAL_STUDIO\n\n    def _format_properties(self, build_info, condition):\n        def has_valid_ext(lib):\n            ext = os.path.splitext(lib)[1]\n            return ext in VALID_LIB_EXTENSIONS\n\n        fields = {\n            'condition': condition,\n            'bin_dirs': \"\".join(\"%s;\" % p for p in build_info.bin_paths),\n            'res_dirs': \"\".join(\"%s;\" % p for p in build_info.res_paths),\n            'include_dirs': \"\".join(\"%s;\" % p for p in build_info.include_paths),\n            'lib_dirs': \"\".join(\"%s;\" % p for p in build_info.lib_paths),\n            'libs': \"\".join(['%s.lib;' % lib if not has_valid_ext(lib)\n                             else '%s;' % lib for lib in build_info.libs]),\n            'definitions': \"\".join(\"%s;\" % d for d in build_info.defines),\n            'compiler_flags': \" \".join(build_info.cxxflags + build_info.cflags),\n            'linker_flags': \" \".join(build_info.sharedlinkflags),\n            'exe_flags': \" \".join(build_info.exelinkflags)\n        }\n        formatted_template = self.properties_template.format(**fields)\n        return formatted_template\n\n    @property\n    def content(self):\n        per_item_props = self._format_items()\n\n        properties = [self._format_properties(self._deps_build_info, condition='')]\n        for config, cpp_info in self._deps_build_info.configs.items():\n            condition = \" Condition=\\\"'$(Configuration)' == '%s'\\\"\" % config\n            properties.append(self._format_properties(cpp_info, condition=condition))\n\n        fields = {\n            'item_properties': per_item_props,\n            'properties': '\\n'.join(properties)\n        }\n        formatted_template = self.template.format(**fields)\n\n        userprofile = os.getenv(\"USERPROFILE\")\n        if userprofile:\n            userprofile = userprofile.replace(\"\\\\\", \"\\\\\\\\\")\n            formatted_template = re.sub(userprofile, \"$(USERPROFILE)\", formatted_template,\n                                        flags=re.I)\n        return formatted_template\n", "path": "conans/client/generators/visualstudio.py"}], "after_files": [{"content": "import os\nimport re\n\nfrom conans.model import Generator\nfrom conans.paths import BUILD_INFO_VISUAL_STUDIO\nfrom conans.client.tools.files import VALID_LIB_EXTENSIONS\n\n\nclass VisualStudioGenerator(Generator):\n\n    template = '''<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <ImportGroup Label=\"PropertySheets\" />\n  <PropertyGroup Label=\"UserMacros\" />\n  <PropertyGroup Label=\"Conan-RootDirs\">{item_properties}\n  </PropertyGroup>\n  {properties}\n  <ItemGroup />\n</Project>'''\n\n    properties_template = '''<PropertyGroup Label=\"ConanVariables\"{condition}>\n    <ConanCompilerFlags>{compiler_flags}</ConanCompilerFlags>\n    <ConanLinkerFlags>{linker_flags}</ConanLinkerFlags>\n    <ConanPreprocessorDefinitions>{definitions}</ConanPreprocessorDefinitions>\n    <ConanIncludeDirectories>{include_dirs}</ConanIncludeDirectories>\n    <ConanResourceDirectories>{res_dirs}</ConanResourceDirectories>\n    <ConanLibraryDirectories>{lib_dirs}</ConanLibraryDirectories>\n    <ConanBinaryDirectories>{bin_dirs}</ConanBinaryDirectories>\n    <ConanLibraries>{libs}</ConanLibraries>\n  </PropertyGroup>\n  <PropertyGroup{condition}>\n    <LocalDebuggerEnvironment>PATH=%PATH%;{bin_dirs}</LocalDebuggerEnvironment>\n    <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>\n  </PropertyGroup>\n  <ItemDefinitionGroup{condition}>\n    <ClCompile>\n      <AdditionalIncludeDirectories>$(ConanIncludeDirectories)%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\n      <PreprocessorDefinitions>$(ConanPreprocessorDefinitions)%(PreprocessorDefinitions)</PreprocessorDefinitions>\n      <AdditionalOptions>$(ConanCompilerFlags) %(AdditionalOptions)</AdditionalOptions>\n    </ClCompile>\n    <Link>\n      <AdditionalLibraryDirectories>$(ConanLibraryDirectories)%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\n      <AdditionalDependencies>$(ConanLibraries)%(AdditionalDependencies)</AdditionalDependencies>\n      <AdditionalOptions>$(ConanLinkerFlags) %(AdditionalOptions)</AdditionalOptions>\n    </Link>\n    <Midl>\n      <AdditionalIncludeDirectories>$(ConanIncludeDirectories)%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\n    </Midl>\n    <ResourceCompile>\n      <AdditionalIncludeDirectories>$(ConanIncludeDirectories)%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\n      <PreprocessorDefinitions>$(ConanPreprocessorDefinitions)%(PreprocessorDefinitions)</PreprocessorDefinitions>\n      <AdditionalOptions>$(ConanCompilerFlags) %(AdditionalOptions)</AdditionalOptions>\n    </ResourceCompile>\n  </ItemDefinitionGroup>'''\n\n    item_template = '''\n    <Conan-{name}-Root>{root_dir}</Conan-{name}-Root>'''\n\n    def _format_items(self):\n        sections = []\n        for dep_name, cpp_info in self._deps_build_info.dependencies:\n            fields = {\n                'root_dir': cpp_info.rootpath,\n                'name': dep_name.replace(\".\", \"-\")\n            }\n            section = self.item_template.format(**fields)\n            sections.append(section)\n        return \"\".join(sections)\n\n    @property\n    def filename(self):\n        return BUILD_INFO_VISUAL_STUDIO\n\n    def _format_properties(self, build_info, condition):\n        def has_valid_ext(lib):\n            ext = os.path.splitext(lib)[1]\n            return ext in VALID_LIB_EXTENSIONS\n\n        fields = {\n            'condition': condition,\n            'bin_dirs': \"\".join(\"%s;\" % p for p in build_info.bin_paths),\n            'res_dirs': \"\".join(\"%s;\" % p for p in build_info.res_paths),\n            'include_dirs': \"\".join(\"%s;\" % p for p in build_info.include_paths),\n            'lib_dirs': \"\".join(\"%s;\" % p for p in build_info.lib_paths),\n            'libs': \"\".join(['%s.lib;' % lib if not has_valid_ext(lib)\n                             else '%s;' % lib for lib in build_info.libs]),\n            'definitions': \"\".join(\"%s;\" % d for d in build_info.defines),\n            'compiler_flags': \" \".join(build_info.cxxflags + build_info.cflags),\n            'linker_flags': \" \".join(build_info.sharedlinkflags),\n            'exe_flags': \" \".join(build_info.exelinkflags)\n        }\n        formatted_template = self.properties_template.format(**fields)\n        return formatted_template\n\n    @property\n    def content(self):\n        per_item_props = self._format_items()\n\n        properties = [self._format_properties(self._deps_build_info, condition='')]\n        for config, cpp_info in self._deps_build_info.configs.items():\n            condition = \" Condition=\\\"'$(Configuration)' == '%s'\\\"\" % config\n            properties.append(self._format_properties(cpp_info, condition=condition))\n\n        fields = {\n            'item_properties': per_item_props,\n            'properties': '\\n'.join(properties)\n        }\n        formatted_template = self.template.format(**fields)\n\n        userprofile = os.getenv(\"USERPROFILE\")\n        if userprofile:\n            userprofile = userprofile.replace(\"\\\\\", \"\\\\\\\\\")\n            formatted_template = re.sub(userprofile, \"$(USERPROFILE)\", formatted_template,\n                                        flags=re.I)\n        return formatted_template\n", "path": "conans/client/generators/visualstudio.py"}]}