Install - .NET Framework Windows Dynamic Agent started from the Command Line
.NET Framework Compatibility
vFunction supports C# .NET Framework version 4.x applications.
Installation Workflow - Use Environment Variables to set Installation Parameters
- Ensure Prerequisites are met
 - Download the vFunction Windows Controller Installation ZIP
 - RDP to the Windows Server as the user who runs the Application
 - Move the Installation ZIP to the location on the Windows Server where vFunction should run
 - Extract the vFunction Installation Package
 - Open PowerShell
 - Add Environment Variables for the vFunction Dynamic Agent and install the Agent
 
### Replace the $CHANGE_ME values with the Required Configuration Settings. For detailed Settings explanations, see:
### https://kb.vfunction.com/installations/configurable-settings/mono-dynamic-agent/dotnet/windows/#required
### Replace $BASE_DIR with the Windows location where the vFunction Installation ZIP was extracted
powershell -NoProfile -ExecutionPolicy unrestricted -Command "
Get-ChildItem -Path '$BASE_DIR' -Recurse | Unblock-File;
New-Item -Path Env:\VF_CONTROLLER_DEFAULT_DOTNET_CONTROLLER_NAME -Value '$CHANGE_ME';
New-Item -Path Env:\VF_CONTROLLER_DEFAULT_DOTNET_CONTROLLER_HOST -Value '$CHANGE_ME';
New-Item -Path Env:\VF_CONTROLLER_DEFAULT_DOTNET_CONTROLLER_APP_ID -Value '$CHANGE_ME';
New-Item -Path Env:\VF_CONTROLLER_DEFAULT_DOTNET_CONTROLLER_ORG_ID -Value '$CHANGE_ME';
New-Item -Path Env:\VF_CONTROLLER_DEFAULT_DOTNET_CONTROLLER_CLIENT_ID -Value '$CHANGE_ME';
New-Item -Path Env:\VF_CONTROLLER_DEFAULT_DOTNET_CONTROLLER_CLIENT_SECRET -Value '$CHANGE_ME';
New-Item -Path Env:\VF_CONTROLLER_DEFAULT_DOTNET_CONTROLLER_INSTANCE_ID -Value '$CHANGE_ME';
New-Item -Path Env:\VF_CONTROLLER_DEFAULT_DOTNET_CONTROLLER_TAG -Value '$CHANGE_ME';
New-Item -Path Env:\VF_CONTROLLER_DEFAULT_DOTNET_AGENT_VERSION -Value 'framework';
New-Item -Path Env:\VF_CONTROLLER_DEFAULT_DOTNET_AGENT_ENVIRONMENT -Value 'command';
$BASE_DIR\controller-installation\install.ps1 -instance default-dotnet"
- Create a script that runs your Command Line Application and hooks the vFunction Agent into the Application
 
### Replace $BASE_DIR with the Windows location where the vFunction Installation ZIP was extracted
### Replace $RUN_APP with the workflow that launches your .NET Application
$env:VF_AGENT_CONF_LOCATION='$BASE_DIR\config\agent\instances\default-dotnet\conf.json'
$env:COR_PROFILER_PATH_64 = '$BASE_DIR\agent\vfagent.net.dll'
$env:COR_PROFILER_PATH_32 = '$BASE_DIR\agent\vfagent.net.x86.dll'
$env:COR_ENABLE_PROFILING = '1'
$env:COR_PROFILER = '{cd7d4b53-96c8-4552-9c11-6e41df8eab8a}'
$env:COMPlus_TailCallOpt = 0
& '$RUN_APP'
- Run the script that was created in Step #8
 - Confirm that the Application comes up and functions as expected. If any issues arise:
 
- Start Learning in the vFunction UI
 - Validate the vFunction data collection
 
Installation Workflow - Use a YAML to set Installation Parameters
- Ensure Prerequisites are met
 - Download the vFunction Windows Controller Installation ZIP
 - RDP to the Windows Server as the user who runs the Application
 - Move the Installation ZIP to the location on the Windows Server where vFunction should run
 - Extract the vFunction Installation Package
 - In a text editor, open the $BASE_DIR\vfunction\config\installation\instances\default-dotnet\installation.yaml
 - Modify the required and optional configurable settings
 
### Replace the $CHANGE_ME values with the Required Configuration Settings
### Follow the Guidance in the Comments
controller:
  name: $CHANGE_ME #VF Server UI identifier for the Agent, e.g. QA-Win1-BillPay
  host: $CHANGE_ME #Address of the VF Server, e.g. https://vfunction.organization.com
  org_id: $CHANGE_ME #UUID retrieved from VF Server UI's Install Instructions dialog box
  app_id: $CHANGE_ME #UUID retrieved from VF Server UI's Install Instructions dialog box
  client_id: $CHANGE_ME #UUID retrieved from VF Server UI's Install Instructions dialog box
  client_secret: $CHANGE_ME #UUID retrieved from VF Server UI's Install Instructions dialog box
  type: dotnet
  instance_id: $CHANGE_ME #Field added manually. It's useful if the App is restarted regularly to reuse Agent IDs in the VF Server UI
  instrconf_additions:
    inclusions:
    exclusions:
  tags:
    - $CHANGE_ME #Strings used for logical groupings for App's Learning, e.g. "prod" or "BillPay"
	- $CHANGE_ME #UUID retrieved from VF Server UI's Install Instructions dialog box
server_application:
agent:
  version: framework #This field needs to be changed from the default "dotnet"
  environment: command #This field needs to be changed from the default "iis"
- Open Powershell
 - Install the Agent
 
### Replace $BASE_DIR with the Windows location where the vFunction Installation ZIP was extracted
powershell -NoProfile -ExecutionPolicy unrestricted -Command "
Get-ChildItem -Path '$BASE_DIR' -Recurse | Unblock-File;
$BASE_DIR\controller-installation\install.ps1 -instance default-dotnet"
- Create a script that runs your Command Line Application and hooks the vFunction Agent into the Application
 
### Replace $BASE_DIR with the Windows location where the vFunction Installation ZIP was extracted
### Replace $RUN_APP with the workflow that launches your .NET Application
$env:VF_AGENT_CONF_LOCATION='$BASE_DIR\config\agent\instances\default-dotnet\conf.json'
$env:COR_PROFILER_PATH_64 = '$BASE_DIR\agent\vfagent.net.dll'
$env:COR_PROFILER_PATH_32 = '$BASE_DIR\agent\vfagent.net.x86.dll'
$env:COR_ENABLE_PROFILING = '1'
$env:COR_PROFILER = '{cd7d4b53-96c8-4552-9c11-6e41df8eab8a}'
$env:COMPlus_TailCallOpt = 0
& '$RUN_APP'
- Run the script that was created in Step #10
 - Confirm that the Application comes up and functions as expected. If any issues arise:
 
- Start Learning in the vFunction UI
 - Validate the vFunction data collection