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.
@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?
checked into 4.1.0-rtm via https://github.com/NuGet/NuGet.Client/commit/0d68700e6a147cfcb737207fbab226a5b707ecd6