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
File details
Details for the file vcxproj_stream_editor-0.1.0.tar.gz
.
File metadata
- Download URL: vcxproj_stream_editor-0.1.0.tar.gz
- Upload date:
- Size: 7.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.0 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 545da0f021c93666ba0b96590aad9f39772985a51957c3b48c8646daa307c411 |
|
MD5 | 6579869cf5ded83d581ef980758d0928 |
|
BLAKE2b-256 | 9625a0d978d6b34cced23ba0e6d84f9503f3956d838661ba22d328c507ef76ca |
File details
Details for the file vcxproj_stream_editor-0.1.0-py3-none-any.whl
.
File metadata
- Download URL: vcxproj_stream_editor-0.1.0-py3-none-any.whl
- Upload date:
- Size: 7.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.0 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fb386c02534e0eb46c04abba3af33a78b4428b07afb0e4d95219c21199f4ef93 |
|
MD5 | 8ca7ef82a2b01f16a65a44e23bd66a1e |
|
BLAKE2b-256 | eb4309b1ad059c17b17b3e9da43bd311f03e915efe8a8693e2fa8eceaf1db891 |