我有一个项目可以在UWP/UAP10.0项目和.NET4.5 Web API项目中用作Nuget包(或任何其他类型,使用常规类库为UAP和.NET4编译相同的C#代码
我已经将我原来的.NET4.5代码移植到可移植类库中,能够将它打包在nuget中并在UWP环境中使用它。我不能在nuget包(相同的DLL,多个lib目标)的常规.NET4.5应用程序中使用相同的DLL。
我目前正在编译和打包Visual Studio中的两个项目:一个可移植类库,一个类库。
因为我有精确的代码重复,所以这并不高效。有没有一种方法可以将nuget包中的一个项目维护/构建到多个类库中?或者另一个项目包含可移植类库和类库都引用的相同代码?
下面是我在做什么,我nuspec的时刻:
<file src="MyApp\bin\Release\MyApp.dll" target="lib\net45\MyApp.dll" />
<!-- .NET 4.5.2 -->
<file src="MyApp\bin\Release\MyApp.dll" target="lib\net452\MyApp.dll" />
<!-- .NET 4.6 -->
<file src="MyApp\bin\Release\MyApp.dll" target="lib\net46\MyApp.dll" />
<!-- UAP -->
<file src="MyApp.Portable\bin\Release\MyApp.Portable.dll" target="lib\uap10.0\MyApp-Uap10.dll" />
你有没有考虑一个.NET标准项目类型?我无法告诉你这是否受到任何UWP使用的支持,但这会将您的项目减少到1.另外,请注意,将文件添加到其他项目时,文件选择对话框中的“添加”按钮有一个下拉列表,选择“链接”菜单项以添加到现有文件的链接。这并不能减轻将文件实际添加到多个项目的需求,但是您只能在磁盘上拥有1个源代码副本。 –
您可能想看看[共享项目](http://dailydotnettips.com/2015/07/28/using-shared-project-across-multiple-applications-in-visual-studio-2015/)。这使您可以在多个其他项目之间共享一组“.cs”文件,所有项目都针对不同版本的.Net。所以你没有任何重复的文件,但是你仍然可以从那个代码中创建针对不同版本的.Net –
的类库。使用共享项目(我们称之为API.Shared)的问题是虽然它允许我在两个项目类型之间共享相同的代码,但是一旦单个项目(MyProject.Portable和MyProject.Net)被编译到一个DLL中并被打包,我就不能在共享项目中公开文件外部使用nuget包时。我必须在每个项目中都有一个类来暴露共同的代码,从而破坏了这一点。我想访问所有的类,枚举等。 –