Home: Pack target misses .pri files for Windows targets when multitargeting

Created on 21 Dec 2016  路  20Comments  路  Source: NuGet/Home

Moved from https://github.com/dotnet/sdk/issues/508 filed by @onovotny

When using msbuild /t:pack to generate a NuPkg on a multi-targeted project that includes Windows outputs (uap10.0, win8, wpa81, etc) that also contain a .pri file, the generated NuSpec used to create the package does not include the .pri file. That will lead to errors loading resources.

To repro:
Check out this commit from Zeroconf:
https://github.com/onovotny/Zeroconf/tree/39d47e8fea22a1eb19938392e0bc8f903181cf02

Run the following command msbuild /t:pack /p:Configuration=Release

Look at the NuSpec, it's missing the .pri files.

Pack Bug

All 20 comments

@onovotny Could you update the build steps for the above project? I am getting the following errors:

"D:\temp\pri-files\Zeroconf\Zeroconf\Zeroconf.csproj" (pack target) (1) -> "D:\temp\pri-files\Zeroconf\Zeroconf\Zeroconf.csproj" (Build target) (1:2) -> (CheckForDuplicateItems target) -> C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Sdks\Microsoft.NET.Sdk\build\Microsoft.NET.Sdk .DefaultItems.targets(123,5): error : Duplicate 'Compile' items were included. The .NET SDK includes 'Compile' items fr om your project directory by default. You can either remove these items from your project file, or set the 'EnableDefau ltCompileItems' property to 'false' if you want to explicitly include them in your project file. The duplicate items we re: 'AdapterInformation.cs'; 'AsyncLock.cs'; 'Dns\Header.cs'; 'Dns\Question.cs'; 'Dns\Record.cs'; 'Dns\RecordA.cs'; 'Dn s\RecordAAAA.cs'; 'Dns\RecordNSEC.cs'; 'Dns\RecordPTR.cs'; 'Dns\RecordReader.cs'; 'Dns\RecordSRV.cs'; 'Dns\RecordTXT.cs '; 'Dns\RecordUnknown.cs'; 'Dns\Request.cs'; 'Dns\Response.cs'; 'Dns\RR.cs'; 'Dns\Structs.cs'; 'DomainService.cs'; 'INe tworkInterface.cs'; 'Properties\AssemblyInfo.cs'; 'ServiceAnnouncement.cs'; 'ZeroconfRecord.cs'; 'ZeroconfResolver.Asyn c.cs'; 'ZeroconfResolver.cs'; 'ZeroconfResolver.Observable.cs' [D:\temp\pri-files\Zeroconf\Zeroconf\Zeroconf.csproj]

@rohit21agrawal I've just pushed an update to the dev branch with the updated glob.

Should this be in RC3 or聽only in RTM? I tested RC3 and I don't see the pri files in the package....

This is in RTM

The latest CLI will have this fix though

should this be in RC4? I just tested RC4 and still don't see the .pri file in the package.

@onovotny yes this should be in RC4.

can you do a /v:diag build on your UWP project and give me the values of $(IncludeProjectPriFile), $(ProjectPriFile) and $(_TargetPathsToAssembiles) ?

Will do but you should be able to repro with Zeroconf. check out the dev branch of https://github.com/onovotny/zeroconf. Then in the src\zeroconf directory, do msbuild /t:restore zeroconf.csproj then msbuild /t:pack zeroconf.csproj.

Looking at the nupkg in the bin directory, the lib\uap10.0 folder doesn't have the pri.

looking

IncludeProjectPriFile is true
ProjectPriFileName = Zeroconf.pri

_TargetPathsToAssembiles doesn't exist

Keep in mind that it's a multi-targeted project; UWP is one of the outputs

_TargetPathsToAssemblies would exist when you call pack.
Also ProjectPriFullPath instead ProjectPriFileName

can you repro on my project? I tried it again and get the same result.

yeah i am installing all the required workloads

@onovotny turns out the .pri file is being included only when project has TargetFramework , and not TargetFrameworks . Figuring out why this is happening.

We'll consider the fix when we see the code, etc... Please work on a fix.

@rrelyea i have sent out a PR for this.

i have merged the fix for this bug into dev branch for 4.3 milestone, but reopening this under 4.1 milestone for visibility.

CC: @rrelyea @DoRonMotter

What's it going to take to get this into 4.1? Seems like a small fix?

Was this page helpful?
0 / 5 - 0 ratings