Release Bulletin for SnapDevelop 2019 R2
Last Updated: May 2020
Introduction
This document provides important information about the 2019 R2 release of SnapDevelop, including the two SnapDevelop plugins, .NET DataStore/DataWindow Converter and PowerScript Migrator.
System Requirements
Make sure your system meets all requirements before you install SnapDevelop 2019 R2.
Windows 10, Windows 8.1, or Windows 7 SP1
Universal C Runtime
The setup program will check if Universal C Runtime is installed; if it is not installed, the setup program will provide the package list, and you will need to manually download and install the package. Or you can follow the instructions in Installation Guide.
Microsoft .NET Framework 4.6.1 SDK (can be installed during the SnapDevelop installation progress)
Microsoft .NET Core SDK 2.1 and 2.2 (can be installed during the SnapDevelop installation progress)
TypeScript SDK 3.1 (can be installed during the SnapDevelop installation progress)
Database Server Requirements
SnapDevelop IDE, .NET DataStore, and SnapObjects support the following database types and versions:
DB Type | DB Version |
---|---|
MySQL | 5.6, 5.7, or 8.0 |
PostgreSQL | 9.6, 10.1, 11.3, or 12 |
Oracle | 12c, 18c, or 19c |
SQL Server | 2016, 2017, or 2019 |
SQL Anywhere (ODBC) | 16 (16.0.0.2043 or later) or 17 |
SQLite | 3 |
Known Issues
SnapDevelop IDE
Toolbar Items/Menu Items/Shortcut Keys
- The filter function in the References window does not work.
- If you remove some buttons in the toolbar, the buttons still display after you restart SnapDevelop.
- A Save Window Layout menu item is available, however, there is no function for restoring a saved layout.
- If you press Ctrl+Alt+Break to temporarily stops execution in a debugging session, a dotted box appears around the toolbar.
Start Page
- If you pin (or unpin) a project in the Recent Projects list, the project is not pinned (or unpinned) until after you restart the Start Page open.
Editor
- It is unsupported to drag external files (html, cs) to the SnapDevelop editor area to edit.
- It is unsupported to zoom in/out font sizes by clicking ctrl+scroll.
- When you click the Replace button, the editor and cursor stay where they are, and do not scroll to the code that is making the replacement.
- When you click the Replace button while the cursor is just before an occurrence to be replaced, the next occurrence is replaced instead of the current one.
- If you select the Export in DataWindow Converter, or the Generate button in Scaffolding, all open .cs files will get closed.
- If you make changes to a project in Visual Studio while the project is also opened in SnapDevelop, after you save the changes in Visual Studio, some temporary files may display for the project in SnapDevelop.
Projects/Solutions
- When creating a new project, it is possible that a project name contains only spaces; it is unsupported to specify relative path when creating a project.
- After you perform a search in Solution Explorer, if you clear the search criteria, all the folders in Solution Explorer display as collapsed.
- If there are too many files in Solution Explorer (that cannot be displayed fully on the screen), when you attempt to select all the files, only the files that are last shown on the screen are selected.
- If there are too many files in Solution Explorer (that cannot be displayed fully on the screen), when you click the Sync with Active Document button but the active document is not displayed, you have to scroll the files in Solution Explorer to find the active document (although the document is highlighted).
Scaffolding
- When you first start the scaffolding function, you may need to wait for a few more seconds for the scaffolding window to be completely loaded, even after the progress bar is 100% done.
- With the scaffolding window open, if you delete the service/controller folder that is just created through scaffolding, and then click the Generate button to generate the service/controller again, an error will occur.
- If you scaffold from a model that does not support Update with a scaffolding template that will create the Update and Create APIs, an error will occur when you execute the Update or Create API in the generated service.
- If you specify a folder name that cannot be used as a variable name, the scaffolding function cannot detect the unsupported name, but the generated controller will have error in it.
- Although you have added multiple data contexts that connect to different databases in a project, the Scaffolding window only shows one data context option for generating services.
Git Source Control
- If you make changes in the editor while the Changes page is on display in Team Explorer, the Commit buttons in the Changes page remain disabled, unless you exit the Changes page and open it again.
SVN Source Control
- If you add a project to SVN source control, only the following special characters are allowed in the target repository path: +, @, $, &, *, _, (), =, -. All other special characters (including space) are unsupported.
- After a file or folder in a project is renamed and committed to the SVN server, when another user updates the file or folder, the file or folder may become missing from his project folder. To avoid such issues, make sure you always commit or update the whole project folder instead of a single file or folder.
Unit Testing
- If you use the
[InlineData]
attribute to set the different test scenarios, after one test scenario fails, you cannot proceed to test the next test scenario. - When you perform unit testing in debug mode, it is not possible to dynamically change an enum-type parameter.
- Unit testing cannot restore the last test results if you reopen a solution or reopen the IDE.
Debugging
- It is unsupported to get the values of static class attributes in debug mode.
- It is unsupported to view the data information in the DataTable in debug mode.
- Two issues with asynchronous debugging: (1) Clicking F11 does not take effect; (2) It happens rarely that the debugging auto exits in the middle of the process.
- When the IDE is in dark theme, the code font color sometimes changes in synchronous debugging mode.
- It happens sometimes that the debugging still continues even if the program has stopped.
- When you perform formatting or copy/paste operation on a code line with breakpoint, the coloring of the breakpoint may go wrong.
- If the data type of a return value is model, you may need to refresh a few times to view the return value.
SQL Query
- The following features do not work with SQL queries that use ODBC connections:
- Cannot mark the primary key columns in the table schema;
- Can only show the tables and views, but not functions, stored procedures and triggers;
- Does not support the auto-creation of SELECT Top 100 and SELECT By Key statements;
- Cannot show execution plan of a SQL query.
- It is unsupported to connect to an encrypted SQLite database.
- Even if a DB connection is closed, users can still query a database even if the DB connection is manually closed.
- If you have opened several SQL Query tabs, when you select to close solution, you will be prompted multiple times whether to save the SQL queries.
- In SQL Query, if you execute copy/cut but nothing is selected, all the content will be copied/cut.
- If a database table contains special characters (for example, "]"), the generated SQL query statement may fail to execute successfully.
- If you add a primary key to a table column in SQL Query, after you refresh the table, the primary key information does not display properly.
- SQL queries display all NULL results as empty.
Build
- Even after you have installed the .NET Core 2.2.402 SDK, the target framework does not show ".NET Core 2.2" as a build option.
- The Output window does not show the statistics of referenced projects when you perform a Build/Clean/Rebuild.
Publish Projects to Docker
- It is not well supported to publish projects to Docker Window container yet.
NuGet Package Manager
- When you remove a NuGet package from a solution, the package file is not removed from the \Microsoft SDKs\ folder.
- If SnapDevelop fails to connect to NuGet.org, when you create a new project, the NuGet packages in the projects are all marked by a yellow exclamation mark, even after you execute the Restore NuGet Packages on the solution. The yellow exclamation mark will disappear after you restart the IDE.
Open PB Workspace
- If you refresh the currently-open PB workspace while a .srd file is open, the .srd file will fail to refresh.
.NET DataStore, DataWindow Converter and PowerScript.Bridge
DataWindow Converter
- If a DataWindow column is of Char type and has multiple lines of data as its initial value, the generated model may fail to work.
- If a DataWindow column is of Char type and contains double quotes ("") in its initial value, the initial value will be translated incorrectly in the generated model.
- With Oracle connections, if a DataWindow column is of numeric type and the decimal precision of the value in the column is greater than that of C# decimals, the generated model will fail to retrieve.
- With Oracle connections, if a DataWindow column name is one of the Oracle key words, the generated model will fail to retrieve.
- With Oracle connections, it is supported to connect to the database using TCPS, but it is unsupported to automatically add the Wallet settings in the appsettings. json file.
- Currently, the following PB functions are not supported: CrosstabSum, Page, PageCount, CrosstabAvg, CrosstabAvgDec, CrosstabCount, CrosstabMax, CrosstabMaxDec, CrosstabMin, CrosstabMinDec, CrosstabSumDec, GetPaintDC, GetPaintRectHeight, GetPaintRectWidth, GetPaintRectX, RowHeight, RichTextFile, Paint, StripRTF…
- The C# models converted from DataWindows will give priority in use of the information from DataWindow, such as the property type, whether nullable, etc. When DataWindow SQL statements (such as left, right, union etc.) cause the data columns to be empty, which if it is not allowed in the database, exceptions will occur when querying with the DataStore, in such case, the developer will need to manually change the data type to nullable.
.NET DataStore (DWNet.Data and DWNet.Data.AspNetCore)
- It is unsupported to retrieve to a model converted from a Crosstab DataWindow, so it is recommended not to convert Cross DataWindows.
- Some DataWindow expression features cannot work well yet: Like, Trim, CumulativePercent.
- The String[] type parameter is unsupported in models and shall be replaced with list.
- The RetrievebyKey only searchs the master table. If the detail table contains a field that has the same name as a field in the master table, the field in the detail table will be erroneously set to the same value as the field in the master table.
- Using ExportRowAsString to export a date type value, the millisecond in the value will be ignored.
- Please note the following behavioral difference from PowerBuilder: (1) It is not possible to change a "NewModified" row status to "NotModified"; (2) if you change a row status from "NotModified" to "New", the row status becomes "NewModified".
- When a generic DataStore executes the Sort or SortBy function, it does not keep the sorting criteria.
- It is not possible to update database with a DataStore that is dynamically created using .srd.
PowerScript.Bridge
- The version of the PowerScript.Bridge NuGet package provided in the 2019 R2 GA installer is 1.0.0. We recommend you manually upgrade it to 1.0.1 (or later) for better handling of the translated DataStore functions.
PowerScript Migrator
- When PowerScript is translated to C#, it might be translated to C# language newer than the default version C# 7.0. For example, PowerScript "readonly" parameters are translated to C# "in" parameters. The "in" parameter is a new feature in C# 7.2. Therefore, we recommend you change the default option for language version from "C# latest major version (default)" to "C# latest minor version (latest)" in Project -> Property -> Build -> Advanced.
- When a dynamic SQL statement is translated to SqlExecutor.ExecuteNonQuery, the first SQL parameter may be translated incorrectly.
- When a DataWindow expression that contains index is translated, the index is not properly deducted by one.
- If a code block contains multiple different transactions, the transactions may be translated incorrectly.
- The "elseif" is incorrectly translated to “else" + comment + newline + "if".
- When the SetItem function uses the row number returned by "row=insertrow(0)", the row number is incorrectly deducted by 1.
- If a GetItemStatus or SetItemStatus function is used to get a row status (the second parameter of the function is 0), the function is incorrectly translated. The workaround is to change the function to GetRowStatus or SetRowStatus before the translation.
- The row identifier in a For loop is incorrectly translated to ".value" (for example, "i.value").
- Sometimes the Migrator would incorrectly add a pair of curly brackets ("{}") in the Else statement.
- When a DataWindow data expression is translated to a SetItem function, you must remove the bool parameter that is added in the function.
- If you want to translate a visual object (for example, window) that contains a DataWindow, be sure to use the Translate Entire Document function, otherwise the functions in the DataWindow cannot be properly translated.
Bug Fixes
SnapDevelop IDE
The following bugs are fixed in SnapDevelop:
- (Bug 2790) The shortcut keys to comment or uncomment code (Ctrl+K, Ctrl+C, Ctrl+U) are not working.
- (Bug 2800) DataContext cannot be consumed from singleton.
- (Bug 3728) When clicking Save in SnapDevelop, the mouse pointer is moved to the beginning of the file.
- (Bug 3994) When “(“ is typed, “)” shall be automatically entered.
- (Bug 3982) When the Web API Tester tests a Retrieve method with the request header "Accept-Encoding"/"gzip, it will return an error message and state that the data is not compressed.
- (Bug 3983) It takes too long for the Web API Tester to show the raw data of the return result, and there is no proper progress indicator.
- (Bug 4045) When scaffolding only services (not controllers) in a Console App and Class Lib project, the controller namespace field is still required.
- (Bug 4212) Login to SnapDevelop would fail if the password contains “\” character.
- (From Community) There shall be a message prompting users to trust the ASP.NET Core SSL certificate.
.NET DataStore, DataWindow Converter
The following bugs are fixed in .NET DataStore, and DataWindow Converter plug-in:
- (Bug 3621) When generating the C# Model for a DataObject containing data, the variable assigned to "new List<FunctionModel>" shall be “data”, not “datas”.
- (Bug 4043) "Error: Index was outside the bounds of the array" occurred when converting a datawindow that uses a stored procedure with multiple parameters to a C# Model.
- (Bug 3625) The RowDiscard function discards the last row if startRow = RowCount in some circumstances.
- (Bug 3665) There is a misspelled word “AutoRetrieve” in DWNet.Data.DwChildAttribute.
- (Bug 3698) When generating C# models from a DataWindow, it shall remember the directory where the models are being created and also the model names.
- (Bug 3717) Error when converting a datastore.SetTransObject method to C#.
- (Bug 3718) When converting from DataWindow to C#, a char variable uses " " (incorrect in C#) instead of ' ' (correct in C#).
- (Bug 3813) With Oracle database, when converting a DataWindow to C#, the Group keyword is removed from the LISTAGG function.
- (Bug 3822) The interface name “InteralUpdate” of the method DWNet.Data.DataStoreBase shall be changed to “InternalUpdate”.
- (Bug 4036) When getting data from a computed column, IDataStore.GetItem<string>(0,"computedcol"), that uses a custom function in the expression a NullReferenceException, "Object reference not set to an instance of an object.", is being thrown.
- (Bug 4137) IDataStore.Evaluate fails with NotSupportedException when the expression uses a function on a column that is NULL.
- (Bug 4206) If a model generated from DataWindow contains a column that has [Key] and [SqlDefaultValue] attributes and does not have initial value, the column is incorrectly taken as an Identity column.
PowerScript Migrator
The following bugs are fixed in PowerScript Migrator plug-in:
- (Bug 3685) The operator “>=” in PowerScript is not correctly translated into C#.
- (Bug 3687) PowerScript Migrator does not correctly translate PbGlobal.Pos to C#.
Upgrade Notes for Version 2019 Users
Please read the Upgrade Guide before you upgrade from version 2019 to 2019 R2.
Third-Party Components and Deployment
SnapDevelop applications have some dependencies on third-party components that are installed with SnapDevelop.
List of Free Download Components (Including Open Source Components)
For the complete list of the free download components (including open-source components), view the Free Download Terms document on the Appeon website.