Rewrite Visual Studio .vcxproj files without spurious changes
Project description
vcxproj-stream-editor
Simple Python library to parse Microsoft Visual Studio .vcxproj files and modify/rewrite without spurious changes
Usage:
Given the following simplified myproject.vcxproj
:
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="Globals">
<ProjectGuid>{96F21549-A7BF-4695-A1B1-B43625B91A14}</ProjectGuid>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
</ClCompile>
</ItemDefinitionGroup>
</Project>
Example 1 (input only):
import vcxproj
@vcxproj.coroutine
def print_project_guid():
while True:
action, params = yield
if action == "start_elem" and params["name"] == "ProjectGuid":
action, params = yield
assert action == "chars"
print("Project GUID is ", params["content"])
vcxproj.check_file("myproject.vcxproj", print_project_guid)
Output:
Project GUID is {96F21549-A7BF-4695-A1B1-B43625B91A14}
Example 2 (input and output):
import vcxproj
@vcxproj.coroutine
def remove_warning_level(target)
while True:
action, params = yield
if action == "start_elem" and params["name"] == "WarningLevel":
action, params = yield
assert action == "chars"
action, params = yield
assert action == "end_elem"
assert params["name"] == "WarningLevel"
continue
target.send((action, params))
vcxproj.filter_file("myproject.vcxproj", remove_warning_level, "myproject.stripped.vcxproj")
myproject.stripped.vcxproj
will have the following content:
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="Globals">
<ProjectGuid>{96F21549-A7BF-4695-A1B1-B43625B91A14}</ProjectGuid>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
</ClCompile>
</ItemDefinitionGroup>
</Project>
Possible values for (action, params)
:
action | params |
---|---|
start_elem |
{"name":<elem_name>, "attrs":{<attr1>:<value1>, <attr2>:<value2>}} |
chars |
{"content":<content>} |
end_elem |
{"name":<elem_name>} |
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for vcxproj_stream_editor-0.1.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 545da0f021c93666ba0b96590aad9f39772985a51957c3b48c8646daa307c411 |
|
MD5 | 6579869cf5ded83d581ef980758d0928 |
|
BLAKE2b-256 | 9625a0d978d6b34cced23ba0e6d84f9503f3956d838661ba22d328c507ef76ca |
Close
Hashes for vcxproj_stream_editor-0.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fb386c02534e0eb46c04abba3af33a78b4428b07afb0e4d95219c21199f4ef93 |
|
MD5 | 8ca7ef82a2b01f16a65a44e23bd66a1e |
|
BLAKE2b-256 | eb4309b1ad059c17b17b3e9da43bd311f03e915efe8a8693e2fa8eceaf1db891 |