Script References (Reference) enables adding external DLLs (Dynamic Link Libraries) to extend the capabilities of scripts and display codes in your solution.
Framework Compatibility:
- Windows/WPF: .NET 4.8 or .NET Standard 2.0
- MultiPlatform/Web: .NET 8.0 or .NET Standard 2.0
Script References allow you to:
- Add external .NET assemblies to your solution
- Extend functionality beyond built-in namespaces
- Use third-party libraries in Scripts and Displays
- Share custom components across solutions
In this page:
Table of Contents maxLevel 2 minLevel 2 indent 10px exclude Steps style none
Configuring References
Overview
Script References allow you to:
- Add external .NET assemblies to your solution
- Extend functionality beyond built-in namespaces
- Use third-party libraries in Scripts and Displays
- Share custom components across solutions
FrameworX includes many .NET namespaces by default. Script References are needed only when you require additional external assemblies not included in the platform.
Configuring ReferencesTo add a Script Reference:
- Navigate to Scripts → References
- Click the plus icon
- Browse and select the DLL file
- Configure:
- Name: Reference identifier
- Description: Purpose of the library
- Target Domain: Server or Client
- Click OK
The new reference appears in the References table.
Configuration Properties
Property | Description |
---|---|
Target Domain | Where the DLL executes (Server or Client) |
NetAssemblyName | Reference name in the solution |
DefaultNamespace | Primary namespace of the DLL |
Resolved | ? = Successfully loaded, ? = Compilation error (hover for details) |
Portable | Indicates cross-platform compatibility |
AssemblyPathRuntime | Runtime path where assembly loads from |
Assembly Path Macros
Use these macros instead of absolute paths for portability:
Macro | Description | Typical Use |
---|---|---|
_ThirdParty_ | MyDocuments/[ProductName]/ThirdParty | Server-side DLLs |
_WpfControls_ | [InstallPath]/WpfControls | Client-side controls |
_ProductPath_ | Product installation directory | System components |
_SolutionPath_ | Solution file directory | Solution-specific DLLs |
_ExecutionPath_ | Working directory (usually solution folder) | Runtime files |
_GAC_ | Global Assembly Cache | Shared .NET assemblies |
Additional Macros
Macro | Description |
---|---|
_ExecutionPathAndName_ | Working directory + solution name |
_ProgramFiles_ | Environment.SpecialFolder.ProgramFiles |
_ProgramFilesX86_ | Environment.SpecialFolder.ProgramFilesX86 |
_SolutionName_ | Solution name without path/extension |
_SolutionPathAndName_ | Solution path + name (no extension) |
_Transfers_ | Default transfers folder |
DLL Placement Best Practices
ThirdParty Folder
Location: MyDocuments/[ProductName]/ThirdParty
- Store server-side external DLLs
- Use macro:
_ThirdParty_
- Domain: Server
- Usage: Script Tasks, Script Classes (Server)
Special Subfolder:
/SNMP
- Additional MIB files for SNMP driver
WpfControls Folder
Location: [InstallPath]/WpfControls
- Store client-side WPF control DLLs
- Use macro:
_WpfControls_
- Domain: Client
- Usage: Displays, Code Behind
<ac:structured-macro ac:name="info"> ac:rich-text-body SmartClient Note: WPF controls require additional manifest configuration for SmartClient deployment. Controls created with T.Portable specification can run on Web Pages. </ac:rich-text-body> </ac:structured-macro>
Using Referenced Assemblies
1. Add the Reference
Go to Scripts → References and add the DLL location.
2. Add Namespace Declarations
Open Code Editor and click the Namespace Declarations button to add namespaces.
<ac:structured-macro ac:name="warning"> ac:rich-text-body Important: Never put using
(C#) or Import
(VB.NET) statements directly in code. Always use the Namespace Declarations dialog. Direct statements will cause compilation errors. </ac:rich-text-body> </ac:structured-macro>
3. Use in Code
csharp
// After adding reference and namespace declaration
// You can use types from the external assembly
var processor = new ExternalLibrary.DataProcessor();
var result = processor.Process(data);
DLL Loading Behavior
Runtime Loading
- DLLs load when Script Module starts
- To update DLL:
- Stop Script Module
- Close Designer
- Replace DLL file
- Restart Script Module
Designer Loading
- DLLs load when Scripts page first opens
- To update DLL after initial load:
- Close Designer completely
- Replace DLL file
- Reopen Designer
- Navigate to Scripts
<ac:structured-macro ac:name="note"> ac:rich-text-body The platform caches loaded assemblies for performance. Complete Designer restart is required to reload updated DLLs. </ac:rich-text-body> </ac:structured-macro>
Namespace Declarations Dialog
Access via Code Editor toolbar button:
This dialog allows you to:
- View default included namespaces
- Add namespaces from referenced assemblies
- Add system namespaces not included by default
- Manage both C#
using
and VB.NETImport
statements
The declarations apply to:
- Current Script Class or Task (when editing scripts)
- Current Display (when editing Code Behind)
Best Practices
- Always use path macros - Never hardcode absolute paths
- Match target frameworks - Ensure DLL compatibility
- Organize by domain - Server DLLs in ThirdParty, Client in WpfControls
- Document dependencies - Note required DLLs in solution documentation
- Version control - Include referenced DLLs in source control
- Test after updates - Verify functionality when updating DLLs
- Use Namespace Declarations - Never add using/import statements directly in code
Troubleshooting
Reference Not Resolved (Red X)
- Hover over row to see error details
- Verify DLL targets correct .NET version
- Check assembly dependencies are available
- Ensure path macro is valid
Types Not Found in Code
- Confirm reference shows Resolved (?)
- Add namespace via Namespace Declarations
- Verify Target Domain matches usage location
- Check DLL compatibility with solution framework
DLL Updates Not Reflected
- Close Designer completely
- Replace DLL file
- Reopen Designer and Scripts page
- For runtime: Stop/restart Script Module
Path Issues When Moving Solutions
- Use macros instead of absolute paths
- Ensure DLLs exist in standard folders
- Copy ThirdParty folder with solution
Best Practices
In this section...
Page Tree | ||||
---|---|---|---|---|
|