Replies: 1 comment
-
Current work-around: Create a <Project>
<PropertyGroup>
<SolutionPackagerLibTfm>net472</SolutionPackagerLibTfm>
<SolutionPackagerLibTfm Condition="'$(MSBuildRuntimeType)' == 'Core'">net6.0</SolutionPackagerLibTfm>
<SolutionPackagerLibFilePath>$(PkgMicrosoft_PowerApps_MSBuild_Solution)\tasks\$(SolutionPackagerLibTfm)\SolutionPackagerLib.dll</SolutionPackagerLibFilePath>
</PropertyGroup>
<UsingTask
TaskName="SolutionPackagerCustomTask"
TaskFactory="RoslynCodeTaskFactory"
AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll"
>
<ParameterGroup>
<Action ParameterType="System.String" Required="True" Output="False" />
<PackageType ParameterType="System.String" Required="False" Output="False" />
<SolutionRootDirectory ParameterType="System.String" Required="False" Output="False" />
<PathToZipFile ParameterType="System.String" Required="True" Output="False" />
<ErrorLevel ParameterType="System.String" Required="False" Output="False" />
<LogFilePath ParameterType="System.String" Required="False" Output="False" />
<MappingFilePath ParameterType="System.String" Required="False" Output="False" />
<Localize ParameterType="System.Boolean" Required="False" Output="False" />
<LocalTemplate ParameterType="System.String" Required="False" Output="False" />
<UseUnmanagedFileForManaged ParameterType="System.Boolean" Required="False" Output="False" />
</ParameterGroup>
<Task>
<Reference Include="$(SolutionPackagerLibFilePath)" />
<Using Namespace="System" />
<Using Namespace="Microsoft.Crm.Tools.SolutionPackager" />
<Code Type="Fragment" Language="cs">
<![CDATA[
try
{
PackagerArguments packagerArguments = new PackagerArguments();
if (!Enum.TryParse(Action, out CommandAction action))
{
Log.LogError("Unrecognized {0} value passed in input {1}: {2}", nameof(CommandAction), nameof(Action), Action);
return false;
}
packagerArguments.Action = action;
if (!Enum.TryParse(PackageType, out SolutionPackageType packageType))
{
Log.LogError("Unrecognized {0} value passed in input {1}: {2}", nameof(SolutionPackageType), nameof(PackageType), PackageType);
return false;
}
packagerArguments.PackageType = packageType;
packagerArguments.Folder = SolutionRootDirectory;
packagerArguments.PathToZipFile = PathToZipFile;
if (!Enum.TryParse(ErrorLevel, out System.Diagnostics.TraceLevel errorLevel))
{
errorLevel = System.Diagnostics.TraceLevel.Info;
Log.LogWarning("Unrecognized {0} value passed in input {1}: {2}", nameof(System.Diagnostics.TraceLevel), nameof(ErrorLevel), ErrorLevel);
Log.LogMessage("Using default error level value: {0}", errorLevel);
}
packagerArguments.ErrorLevel = errorLevel;
packagerArguments.LogFile = LogFilePath;
packagerArguments.MappingFile = MappingFilePath;
packagerArguments.Localize = Localize;
packagerArguments.LocaleTemplate = LocalTemplate;
packagerArguments.SingleComponent = "NONE";
packagerArguments.UseUnmanagedFileForManaged = UseUnmanagedFileForManaged;
new SolutionPackager(packagerArguments).Run();
}
catch (Exception ex)
{
Log.LogErrorFromException(ex);
return false;
}
]]>
</Code>
</Task>
</UsingTask>
<Target Name="PowerAppsPackage" AfterTargets="AfterBuild">
<Message Importance="High" Text="Running Solution Packager to build package type: $(SolutionPackageType) $(SolutionPackageZipFilePath)" />
<SolutionPackagerCustomTask
Action="Pack"
PackageType="$(SolutionPackageType)"
MappingFilePath="$(SolutionPackageMapFilePath)"
SolutionRootDirectory="$(SolutionPackagerMetadataWorkingDirectory)"
PathToZipFile="$(SolutionPackageZipFilePath)"
ErrorLevel="$(SolutionPackageErrorLevel)"
LogFilePath="$(SolutionPackageLogFilePath)"
LocalTemplate="$(SolutionPackageLocalTemplate)"
Localize="$(SolutionPackageEnableLocalization)"
UseUnmanagedFileForManaged="$(SolutionPackageUseUnmanagedFileForManaged)"
/>
<Message Importance="High" Text="Solution: $(SolutionPackageZipFilePath) generated." />
<Message Importance="High" Text="Solution Package Type: $(SolutionPackageType) generated." />
<Message Importance="Normal" Text="Solution Packager log path: $(SolutionPackageLogFilePath)." />
<Message Importance="Normal" Text="Solution Packager error level: $(SolutionPackageErrorLevel)." />
<PpbtTelemetryTrackEvent ProjectType="solution" EventName="target-PowerAppsPackage" EventData="SolutionPackageType=$(SolutionPackageType);SolutionPackageLocalTemplate=$(SolutionPackageLocalTemplate);SolutionPackageEnableLocalization=$(SolutionPackageEnableLocalization)" />
</Target>
</Project> For the above to work, the <Project>
<!-- ... -->
<ItemGroup>
<PackageReference Include="Microsoft.PowerApps.MSBuild.Solution">
<Version>1.33.3</Version>
<PrivateAssets>All</PrivateAssets>
<GeneratePathProperty>true</GeneratePathProperty>
</PackageReference>
</ItemGroup>
</Project> |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
The nuget package
Microsoft.PowerApps.MSBuild.Solution
bundles a version ofSolutionPackageLib
that supports theuseUnmanagedFileForMissingManagedUse
flag when packaging a solution, but theSolutionPackagerTask
in the MSBuild task library has no input to provide this flag from the build system and therefore all builds usingMicrosoft.PowerApps.MSBuild.Solution
can never specify this.Since the underlying library already supports this, the MSBuild task should be updated to support this functionality.
Beta Was this translation helpful? Give feedback.
All reactions