问题描述
当前,我正在开发UWP NuGet软件包,以使其更容易创建出色的弹出窗口和对话框。 目前,该项目尚处于起步阶段,没有太多控件,但我尝试为其创建一个NuGet软件包,以测试该项目是否完好。 除非我将应用程序与引用示例项目的类库一起使用,否则一切正常,但是从NuGet下载库后,我会收到XamlParseException错误。 我搜索了一下,发现应该在输出中添加一些xaml,xbf或其他内容,因此我尝试将以下行添加到nuspec中。
<files>
<!-- XAML controls -->
<file src="Controls\MessageBoxControls\MessageBoxControl.xaml" target="lib\netcore50\Controls\MessageBoxControls"/>
<file src="bin\Debug\UWPPopupToolkit\Controls\MessageBoxControls\MessageBoxControl.xbf" target="lib\netcore50\Controls\MessageBoxControls"/>
<file src="Controls\PopupControlControls\PopupControl.xaml" target="lib\netcore50\Controls\PopupControlControls"/>
<file src="bin\Debug\UWPPopupToolkit\Controls\PopupControlControls\PopupControl.xbf" target="lib\netcore50\Controls\PopupControlControls"/>
<file src="Controls\SlideupPopupControls\SlideupPopup.xaml" target="lib\netcore50\Controls\SlideupPopupControls"/>
<file src="bin\Debug\UWPPopupToolkit\Controls\SlideupPopupControls\SlideupPopup.xbf" target="lib\netcore50\Controls\SlideupPopupControls"/>
</files>
但是我仍然遇到相同的错误,但不知道如何解决? 我应该在以下链接上提及该项目目前在Github上可用 https://github.com/NGame1/UWPPopupToolkit NuGet包也可以在这里找到 https://www.nuget.org/packages/UWPPopupToolkit
解决方法
仅将内容文件放置在nuget软件包的lib
文件夹中将不会自动将其复制到构建输出文件夹中,仅将dll
,pdb
和xml
复制到构建输出文件夹中文件将自动添加到输出项目中。
由于其他文件不是同一类型,因此无法通过方法获得所需的文件。因此,我建议您可以尝试以下方法:
解决方案
1)在项目的根目录上创建一个名为build
的文件夹,然后添加一个名为<package_id>.props的文件。
注意:该文件必须与您的nuget包命名相同,这样才能正常工作。 例如,如果您的nuget项目名为UWPPopupToolkit.0.0.1-rc.nupkg
,则文件必须命名为UWPPopupToolkit.props
。
2)将这些内容添加到UWPPopupToolkit.props
文件中:
<Project>
<Target Name="OutputExtraFiles" BeforeTargets="Build">
<ItemGroup>
<File Include="$(MSBuildThisFileDirectory)..\File\**\*.*"></File>
</ItemGroup>
<Copy SourceFiles="@(File)" DestinationFiles="$(TargetDir)\%(RecursiveDir)%(Filename)%(Extension)"></Copy>
</Target>
</Project>
3)修改您的UWPPopupToolkitSDK.nuspec
文件,如下所示:
<files>
<!-- XAML controls -->
<file src="Controls\MessageBoxControls\MessageBoxControl.xaml" target="File\Controls\MessageBoxControls"/>
<file src="bin\Debug\UWPPopupToolkit\Controls\MessageBoxControls\MessageBoxControl.xbf" target="File\Controls\MessageBoxControls"/>
<file src="Controls\PopupControlControls\PopupControl.xaml" target="File\Controls\PopupControlControls"/>
<file src="bin\Debug\UWPPopupToolkit\Controls\PopupControlControls\PopupControl.xbf" target="File\Controls\PopupControlControls"/>
<file src="Controls\SlideupPopupControls\SlideupPopup.xaml" target="File\Controls\SlideupPopupControls"/>
<file src="bin\Debug\UWPPopupToolkit\Controls\SlideupPopupControls\SlideupPopup.xbf" target="File\Controls\SlideupPopupControls"/>
<file src="build\UWPPopupToolkit.props" target="build" />
</files>
4),然后重新打包您的nuget项目,在安装新版本的nuget软件包之前,请clean the nuget caches first并删除bin
,obj
或主项目的任何输出文件夹。
================================
更新1
在我的身边,清理所有nuget缓存或删除C:\Users\xxx(current user)\.nuget\packages
下的所有缓存文件,然后安装新版本的nuget软件包,目标文件将输出到{{1} }
如果我安装了新版本bin\x86\Debug\Controls
,则一切正常。 查看此内容:
不确定,如果您的问题是文件丢失或您想将其放入0.0.1.5-rc
。
如果是第二个问题,则应修改bin\x86\Debug\netcore50\Controls
,
使用此:
UWPPopupToolkit.props
之后,删除bin和obj文件夹,然后再次重建主项目。
,感谢@Perry Qian-MSFT 最后,我能够解决此问题。 添加这样的文件
<files>
<!-- Dll -->
<file src="bin\Release\UWPPopupToolkit.dll" target="lib\netcore50" />
<!-- Resources -->
<file src="bin\Release\UWPPopupToolkit.pdb" target="lib\netcore50" />
<file src="bin\Release\UWPPopupToolkit.pri" target="lib\netcore50" />
<!-- IntelliSense -->
<file src="bin\Release\UWPPopupToolkit.XML" target="lib\netcore50" />
<!-- XAML control -->
<file src="bin\Release\UWPPopupToolkit\**\*.*" target="lib\netcore50\UWPPopupToolkit" />
<!-- Icon -->
<!--<file src="..\icon.png" target="images\" />-->
</files>
解决了问题。 您可以在这里找到结果文件:UWPPopupToolkitSDK.nuspec | UWPPopupToolkit.props | UWP Popup Toolkit Github