| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Moved project files from the 'src' folder into the root 'vstools'.
- Renamed some projects:
* QtVsTools -> QtVsTools.Package
* qtwizard -> QtVsTools.Wizards
* Project template projects -> QtTemplate.Project.*
* Item template projects -> QtTemplate.Item.*
- Moved QtVsTools.Package source files to a sub-folder named 'Package'.
NOTE: this change breaks the build; it should only be applied together
with subsequent refactoring changes.
Change-Id: Ib7b70c350d8e9f068a023b0250d6b490b17d1687
Reviewed-by: Karsten Heimrich <karsten.heimrich@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
When a required element is missing from the Qt modules XML file, an
exception will now be raised and initialization of the extension will
be aborted. Previously, errors were not detected during init, which
caused null-ref errors while using the extension.
Fixes: QTVSADDINBUG-931
Change-Id: Ife5410329f8cc69619c34ba81f5bf2141541db5c
Reviewed-by: Karsten Heimrich <karsten.heimrich@qt.io>
|
|
|
|
|
|
|
|
|
| |
The recent update of the Qt modules XML file omitted some required
information. This is causing null-ref errors when using the extension.
Task-number: QTVSADDINBUG-931
Change-Id: Ia03467b67cf6257ad1dfd8008925e7996f6a9ab1
Reviewed-by: Karsten Heimrich <karsten.heimrich@qt.io>
|
|
|
|
|
|
| |
Change-Id: Ie239f6a41d9db749b5d0925209506b35bc6d2792
Reviewed-by: Karsten Heimrich <karsten.heimrich@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
Recent changes to the Qt/MSBuild project tracking module use VS SDK
features that are not present in VS 2015. This caused errors when
building the Qt VS Tools solution for VS 2015. This change fixes those
issues.
Change-Id: I9061b5d957b4937725e02d1504321cde96e1c16e
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
The RegExpr project now refences the .NET compilers package. This
ensures that the same compiler is used when building the VS Tools
solution in different versions of Visual Studio. Notably, for VS 2015,
this allows compiling code conforming to more recent versions of C#.
Change-Id: Idfd95e6b9e99ff77095efb90f2d165a2addd1307
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|
|
|
|
|
|
|
|
| |
When VS starts, the add-in will now check if a new development version
is available at download.qt.io. If it is, a notification is printed in
the Qt VS Tools output window.
Change-Id: I3de3c0bf2138203bc34411b32d48e178e0da81c2
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
| |
When a target in Qt/MSBuild requests access to a critical section,
a timeout of 10 seconds will now be enforced to prevent a starvation
scenario, in case of leak of the critical section (e.g. the target that
owns the critical section was terminated without running the fail-safe
release of the critical section).
Fixes: QTVSADDINBUG-917
Change-Id: Ie357152ac6ec208d33a5acfa07a45ace0b1f041f
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fixed concurrency issues in Qt/MSBuild involving references to
non-Qt projects. When building from the command line, references would
be built both in the inner and outer builds of Qt/MSBuild projects.
This change disables the building of referenced projects during the
Qt/MSBuild inner build.
Fixes: QTVSADDINBUG-916
Change-Id: I01ccead3d1d954dfd1ce753319992e3c9b51969d
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
Added a sample solution that makes it easier to reproduce concurrency
issues in parallel builds of Qt/MSBuild projects. A .bat script builds
the sample solution in a loop and records any errors. This script can be
left to run unattended in order to find concurrency issues that occur
infrequently.
Change-Id: I006f8436289caf7e8d784fe73c2d1cb5c2ec73e0
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
The sample test project, previously named 'CoreFeature', and which is
renamed to 'SampleTest' in this change, can now be built outside of the
context of the Qt VS Tools solution. For this purpose, a dedicated
VS solution and qmake .pro file are provided to open the sample test
as a standalone project, respectively, in Visual Studio and Qt Creator.
Change-Id: Icbfa8d19fbc0fc0cf15e889bd78fb2c5116716db
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|
|
|
|
|
|
|
|
| |
The property pages for moc and rcc will now allow overriding/extending
the default C++ Additional Options property. Previously, the default
value in the C++ property page was always used.
Change-Id: Idff5cf058cbcad3453c71edb5db7a8292e58b26a
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
Fixed an issue where compiler options for rcc-generated C++ were missing
default values from the C++ compiler property page. This caused build
errors when overriding compiler options for rcc (all non-overridden
options were deleted).
Change-Id: Iaa3b38b6d4cd8bbae607847b296fa231103c6aa8
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
Update of .tlog files is now disabled while building Qt targets from VS
in design-time. This avoids build errors in VS2017, where the .tlog
directory is not created by default, resulting in write errors with the
message "Could not find a part of the path".
Change-Id: I6d8ac54b4a5d51ff849544bdc04e97859e0f2d18
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
|
|
|
|
|
|
|
|
| |
The PreRegister() method of the IVsTaskStatusCenterService interface
is now called from the UI thread. In VS2017, an exception is raised if
this method is called from a background thread.
Change-Id: Idf04f1db87c2e29a41eb2d40f80f73db699212a9
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Made the following changes to the QtVSTest project:
* Reworked handling of global variables;
* Can now use result functions (e.g. MACRO_OK) in macro code;
* Macros will now return MACRO_OK by default;
* Removed unnecessary macro functions (e.g. MACRO_ASSERT_OK);
* Fixed an issue where generation of empty macro code would fail;
* 'var' statement now assumes 'object' type by default;
* Changed 'ui context' statement parameter 'VS' to 'VSROOT';
* Added the 'DESKTOP' parameter to the 'ui context' statement;
* 'ui context' statement now has a 3 second timeout by default.
Change-Id: I99f5d3d5923f096c207437dee3c679c3b0311ee0
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
Added an option to force a background build of Qt targets in order to
refresh IntelliSense information. This is useful if the option to track
project changes is disabled but the user wants to keep specific projects
up-to-date.
Task-number: QTVSADDINBUG-890
Change-Id: Ibc762085632789c55399af20c0c29de3f4eebfa5
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Settings in the Qt options page pertaining to background builds are now
listed under the heading "IntelliSense". The following settings can be
configured in the context of the update of IntelliSense information:
* Auto project tracking - Enable/disable the automatic tracking of
project changes that may require refreshing IntelliSense information
generated by Qt tools. Disabling this option may speed up loading of
large solutions, but will cause IntelliSense to become outdated, with
respect to any changes in the project up to the next full build.
* Run Qt tools in background build - Enable/disable invoking of all
required Qt tools during backgroun build to update IntelliSense.
If this option is disabled, only qmake is invoked during background
builds. This may speed up IntelliSense refreshing, but can cause
incomplete/inaccurate IntelliSense information to be presented.
* Show debug information - Print debug messages in the output window
about the status of project tracking and background builds.
* Verbosity of background build log - invoke MSBuild during background
builds with the specified log verbosity. MSBuild log messages will also
be printed in the output window.
Task-number: QTVSADDINBUG-890
Change-Id: If298725cdf66d608e0ab100954618672da671245
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Reworked the mechanism that keeps IntelliSense up-to-date with
information generated by Qt tools (e.g. C++ generated by moc). The goal
was to make this update mechanism compatible with large scale solutions
(hundreds of projects). Previously, when opening larger solutions, the
process of setting up VS to notify changes to project properties was
too resource-intensive and would often freeze/crash Visual Studio.
The reworked IntelliSense update has the following new features:
* Project tracking set-up is now serialized. Previously, at solution
load time, all projects were setup for change tracking, which started
the execution of a large number of parallel threads.
* Similarly, background builds triggered by project changes will also
now be serialized.
* UI feedback during tracking setup or background build. This can be
accessed in the list of background tasks provided by VS.
* Possibility to cancel project tracking setup or background build, by
pressing the stop button in the list of background tasks of VS.
Task-number: QTVSADDINBUG-890
Change-Id: Ie27c583e683ab962126572705464506505ce1be7
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
|
|
|
|
|
|
|
|
| |
Fixed an issue where connecting to the QML debug runtime would always
fail. This was introduced with changes to the Concurrent class in:
* 25422f0fde85c050d448c3ba0080522bf2c84140
Change-Id: If6e1234b71cc214dbfe7e498cc84eaa5cbf09f6f
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Added a new 'Test' build configuration to the Qt VS Tools solution.
This can be selected to build and run test projects with release
settings. As such, test projects will now no longer be built as part of
the 'Release' solution configuration.
This change also fixes an issue where the vstools.bat build script
would fail when running with the -init flag. This issue was introduced
as part of the following changes:
* 15779cabfdc324bef56e04b2e943a81410e4e3e4
* db326690ec282f06757cacce40710281122e31d8
Change-Id: I7dd2fbb12fe93c83f9c95521eb6cdf698ed7596d
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
Made the following changes to the PriorityQueue class:
* Added Count property (≈ O(1)) with the number of items in the queue.
* Added IsEmpty property, based on Count.
* Added Remove method (≈ O(log n)) to remove an item from the queue.
Change-Id: Ic94f8f02fdfcf99d47ee033689681ebcc7fa9cde
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Added a new generic utility type, PriorityQueue, that represents a
thread-safe collection of objects that can be retrieved by the order of
their priority at enqueue. The underlying representation is based on a
hash-table, mapping items to their priority, and a binary search tree
containing the items sorted by priority. This results in the following
time complexity profile:
* Enqueue, Dequeue ≈ O(log n)
* Peek, Contains ≈ O(1)
Also added a specialized PunisherQueue, based on PriorityQueue, which
behaves like the standard Queue<T> of the .NET framework, with the
following main differences:
* Thread-safe: can be simultaneously used by several threads.
* Re-queue: Adding the same object (i.e. an object already present in
the queue) many times will not create multiple entries in the queue for
that object. Instead, at each call to Enqueue(), the object is moved
from its current position to the back of the queue (i.e. "punished").
Change-Id: I3e53db1d64190f0470edf645f20312a0e8976ba4
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|
|
|
|
|
|
| |
Added a thread-safe version of the Stopwatch .NET class.
Change-Id: Ia167e38ed126ef11625fab0fe8df7fd6308e08a0
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
|
|
|
|
|
|
|
|
| |
Added the Timestamp singleton class, which provides a thread-safe
strict-monotonic 64-bit timestamp generator, based on the
QueryPerformanceCounter Windows API function (through .NET Stopwatch).
Change-Id: Icf6e67f4982d9b7f5b29b7345c12e4b15d650f2b
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The following changes were made to the Concurrent class:
* Class visibility is now public.
* Sub-class type parameter allows dedicated static critical section
for each sub-class instead of sharing the same critical section across
all sub-classes.
* All functions now have a static version, which uses the static
critical section for synchronization.
* New function ThreadSafeInit allows thread-safe lazy initialization of
ref type properties.
Change-Id: I7a16e8d1be2944ee3d63b8922c8ae4e5c57ae9e5
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In the Qt/MSBuild project tracker, project change events are now sourced
from the ProjectSubscription service. This allows more precision in the
selection of events to receive. Previously, the generic ProjectChanged
event was used, which is raised "after any write lock is released that
caused a change to this project". This was causing the project tracker
to trigger unnecessary background builds.
Task-number: QTVSADDINBUG-890
Change-Id: If27c975b474d9dc2adc1a4335964341506727b9d
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
The Q_NAMESPACE and Q_NAMESPACE_EXPORT macros will now be used as
criteria to determine if a file is a moc source and automatically set
its build item type as QtMoc. Previously, only the Q_OBJECT and Q_GADGET
macros were considered as moc source criteria.
Fixes: QTVSADDINBUG-805
Change-Id: Ia5dca53265fdb82002dde224c8afaf2f81126a9e
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
|
|
|
|
|
|
|
|
|
| |
Updated the list shown in the selection of Qt modules in the
new-project wizard and the "Qt Settings" property page.
Task-number: QTVSADDINBUG-873
Change-Id: I0a902a4a36289d74f21c9ea0e97ca8abe86f553d
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|
|
|
|
|
|
|
|
| |
Fixed a problem where selecting a module with more than one QT value,
i.e. with multiple values allowed in the .pro file QT variable, would
generate an incorrect value of the "Qt Modules" project property.
Change-Id: Ifa13fcec62e64320955b7c2af2b683c7054ae456
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|
|
|
|
| |
Change-Id: I35130a3917ae731a69e852f37c8f6bf7a48aa48c
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|
|
|
|
|
|
|
|
| |
The list of Qt modules used by a project, shown in the project's
"Qt Settings" property page, will now be edited by means of a popup
window with the same selection UI as in the new-project wizard.
Change-Id: I676eaf31491bb918709dcb0c92d4ef85c7ebd4ab
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add a new entry to the Qt options page to allow disabling design-time
tracking of project changes and corresponding request to build
Qt-related targets.
Also added detailed build logging to background builds of Qt targets.
The logging verbosity can also be selected in the Qt options page.
Task-number: QTVSADDINBUG-890
Change-Id: I98f5de7d2767932c74dd8577aafd966648d8b5bc
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Added new entries to the Qt options page to allow disabling design-time
background builds. These background builds are requested when Qt build
variables (generated through a call to qmake) are synchronized, for
the purpose of keeping the design-time information up-to-date. Several
users have reported issues (memory/thread leaks) apparently connected to
background builds in the latest update of VS 2019.
These new options will only have an effect in design-time builds.
Actual, build-time builds are not affected.
Task-number: QTVSADDINBUG-890
Change-Id: I76f3fb9ad6e2b7ad7062b20198fef4823e781c92
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|
|
|
|
|
|
|
|
| |
Added template functions to load and save the properties of
QtOptionsPage to the registry. This will simplify adding new fields to
the options dialog.
Change-Id: Ic2d4046955652e6b254f7e5b9ccfca9b01ba1151
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For VS 2019 and 2017, references in T4 text templates to the VSSDK
assembly Microsoft.VisualStudio.Shell.Interop will now use a path to
the DLL instead of relying on the GAC to locate the assembly by name.
VS 2015 adds the assembly to the GAC, but 2019 and 2017 do not.
This fixes an issue in 4cbf4a4537a11e489da68130a5f608c6664211f3 where
the vstools.bat build script would fail due to T4 text transformation
not being able to locate the VSSDK assembly.
Change-Id: Ia1636747990c7e783b411aa8ebb70aecf7b22d43
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
|
|
|
|
|
|
|
| |
The version of the Qt VS Tools and QtVsTest are now in sync. This will
make it easier to detect/prevent a mismatch between the two extensions.
Change-Id: I701389ade0e0e12de76733f839ec8f625bad905e
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
|
|
|
|
|
|
|
|
| |
The QtVsTest and other projects related to the auto-test framework are
now included in the solution build. Previously, these projects were
skipped during build, and would only be built if explicitly selected.
Change-Id: Ia6c20ec9fd9ed247eca4425a9d28598e457fa7e9
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The auto-test/C# macro client interface header file, MacroClient.h,
is now included in the QtVsTest extension package. The header file is now
copied to %LOCALAPPDATA% when starting VS after installing QtVsTest.
This change will allow development of auto-tests for VS without requiring
that the QtVSTools repository be cloned. The only requirement will be the
installation of the QtVsTest extension.
Change-Id: Ibbcb52c9068e793ea68f4c40b61903891c4c0a9c
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|
|
|
|
|
|
|
|
| |
The sample macro Test_CreateGuiApp.csmacro that creates a project
based on the Qt Widgets Application template was updated to reflect the
renaming of that template (previously named "Qt GUI Application").
Change-Id: I3de941b50ea5d83e7f5cc6025fa68ec0034c4c27
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
Modified the C# macro client interface to allow connecting to and
testing a running instance of VS. This will allow the same instance of
VS to be used across test sessions. Previously, it was only possible to
run a test session on a VS instance created specifically for that
single session.
Change-Id: I8f7a8fd1274911c23b2f70783b3b9a34cab80249
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|
|
|
|
|
|
|
| |
When editing files with a .csmacro extension, the macro statement
will be syntax-highlighted, overlayed on the default C# highlighting.
Change-Id: I3c02307528d1f125222f303d134007b8abc5d1cc
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|
|
|
|
|
|
|
| |
T4 templates will now be able to access the DevEnvDir property,
which points to the installation dir of the VS IDE.
Change-Id: Iecf74f730e929d47128c6f7afd759ef5d33e87b7
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
| |
The C# macros loaded in QtVSTest during a test session will be removed
after that session is over. Previously, macros would remain loaded,
which caused errors and unexpected behavior.
A test session is defined as starting when a test client connects to
the QtVSTest local socket, and ending when that client disconnects.
Change-Id: I965d3a6c68e85e77cb9e61ea680ca005c148dc8a
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|
|
|
|
|
|
|
| |
The manifest file for the QtVSTest auto-test extension was modified to
allow installation in VS2019.
Change-Id: I83830752e33618a5b344ac3cdfc9cc699c7c11fb
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|
|
|
|
|
|
|
| |
The sample auto-test project CoreFeatures was updated to reflect the
latest changes to the Qt VS project format (currently v3.3).
Change-Id: I41e90d594200079554eadd079217daafb73de2f8
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|
|
|
|
|
|
| |
File missing from 0f17827a8d232ab869d191e2ed912d5787ee4cf8
Change-Id: I4449c64fda46a62a82b1980b3501e8e261699783
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fixed a problem where Token objects referenced in more than one RegExpr
statement would potentially lead to render and parse errors. This was
the case with top-level Token objects that were also referenced in the
definition of other tokens (i.e. simultaneously top-level tokens and
sub-tokens). This problem was preventing auto-test macros to be
correctly parsed.
The following example illustrates the reuse of Token objects:
C#:
var tokenA = new Token("A", "a");
var tokenB = new Token("B", "b" & tokenA);
var tokenC = new Token("C", "c" & tokenB);
var tokenX = new Token("X", (tokenA | tokenB | tokenC).Repeat());
Rendered regular expression (capture group names simplified):
((?:(?<A>a)|(?<B>b(?<A>a))|(?<C>c(?<B>b(?<A>a))))*)
Rendered token hierarchy: https://bit.ly/3uOgLBb
Parse tree for test case 'abacba': https://bit.ly/3dR2Mnc
Change-Id: Ie31231d1b70172127107b77c937b3eb585dca73d
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fixed the following issues in the processing of .ts files:
* lrelease called at the end of build, which caused errors in other
tools that tried to access the generated .qm files (e.g. rcc)
* The Output Directory and Output File Name properties of lrelease
were ignored when generating the tool's command line
Task-number: QTVSADDINBUG-898
Change-Id: Id2d8664bac4b0e29006e1c63344334065c67f0ee
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|
|
|
|
|
|
|
| |
Fixed a problem where invoking lupdate or lrelease on a .ts file located
in a sub-directory of the project would skip processing that file.
Change-Id: I717ac90d75bf87d11a2d85448d60b5bb7a2676d7
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|