Xaml 通过NuGet软件包访问的程序集不';不包括一节课
我创建的一个通用类库(UWP)项目有两个类 一,。Xaml 通过NuGet软件包访问的程序集不';不包括一节课,xaml,uwp,nuget,nuget-package,uwp-xaml,Xaml,Uwp,Nuget,Nuget Package,Uwp Xaml,我创建的一个通用类库(UWP)项目有两个类 一,。 public bool可视性转换程序——负责将bool转换为XAML可视性的IValueConverter,反之亦然 二,。 一个publiccustomcontrol模板化控件,其模板(在Themes\Generic.xaml(下面的项目结构)中定义)使用上述BoolToVisibilityConverter 其模板如下所示 <Border ...> <Border.Resources> <
public bool可视性转换程序
——负责将bool
转换为XAML可视性
的IValueConverter
,反之亦然
二,。
一个publiccustomcontrol
模板化控件,其模板(在Themes\Generic.xaml
(下面的项目结构)中定义)使用上述BoolToVisibilityConverter
其模板如下所示
<Border ...>
<Border.Resources>
<local:BoolToVisibilityConverter x:Key="BoolToVisibilityConverter" />
</Border.Resources>
<Grid ...>
<Grid ...
Visibility="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Value, Converter={StaticResource BoolToVisibilityConverter}}" />
</Grid>
</Border>
该文件是使用nuget CLI版本4.3.0.4406的nuget.exe spec
命令生成的
为了生成NuGet包,我首先删除了bin
和obj
文件夹,并在Release(任意CPU)
配置中构建了项目,这在bin
文件夹中生成了以下结构
然后,我使用命令NuGet.exe pack RefClassLibrary.nuspec
从NuGet\
文件夹中为类库生成了NuGet包,该文件夹生成了一个结构如下的nupkg
文件
问题:通过NuGet包使用类库
在一个新的通用Windows应用程序项目中,我运行了安装包
命令,并将nupkg
的绝对路径作为参数,在Visual Studio中的Package Manager控制台中安装生成的包
在构建项目之后(没有错误),我将以下XAML添加到一个新的空白页面
<Page ...
xmlns:rcl="using:RefClassLibrary">
<Grid ...>
<rcl:CustomControl Width="200" Height="200" Value="True"/>
</Grid>
</Page>
在对象浏览器中查看RefClassLibrary
时,如错误所示,booltVisibilityConverter
类确实不存在
直接使用类库
我使用卸载包RefClassLibrary
命令从项目中删除包
然后,我使用命令7z x RefClassLibrary.1.0.0.nupkg-oot
解压nupkg
文件,将其解压到文件夹Out
,并通过解决方案资源管理器添加引用,直接引用项目中Out\lib\uap10.0\
文件夹中包含的dll
,这使它工作得非常完美。booltVisibilityConverter
确实显示在对象浏览器中
这个问题应该如何解决?
正确的程序集包含在NuGet软件包中,尽管它的某些部分(?)没有“导入”到项目中…当通过
Install-package
Cmdlet安装NuGet软件包时,据我所知,这就是NuGet所做的
.nupkg
文件和与包关联的一些其他资产被复制到%USERPROFILE%\.nuget\packages\{identifier}{version}\
文件夹中并缓存在其中问题中描述的问题源于我没有增加NuGet软件包的版本号。 我在我的机器上分两步开发了库项目
CustomControl
创建了库项目,生成了库包,并将其安装在外部应用程序项目中BoolToVisibilityConverter
,重新生成了库包,并将其重新安装到应用程序项目中.nuspec
文件中指定的包的版本号(1.0.0
)在第一步和第二步之间没有增加,因此,步骤2中生成的新包没有被NuGet使用,因为具有相同标识符和版本号的包已经缓存在%USERPROFILE%\.NuGet\packages\
中
这就解释了为什么(请参考对问题的评论)(谢谢!)
因此,解决方案是
.nuspec
文件中的版本号,或者%USERPROFILE%\.nuget\packages
文件夹中与包(或其版本)对应的文件夹…之后,您将重新生成具有相同版本号的库软件包,并将其安装到应用程序项目中。我测试了您的nuget软件包,无法重现您的问题。你的vs版本是什么?我使用了visual studio 2017,15.3.5对回复延迟表示歉意@SunteenWu MSFT我记不清我使用的Visual Studio的确切版本,但我更新到2017社区
15.4.1
,问题仍然存在。
<Page ...
xmlns:rcl="using:RefClassLibrary">
<Grid ...>
<rcl:CustomControl Width="200" Height="200" Value="True"/>
</Grid>
</Page>