所以,我现在的常规设置如下:我有一个可供我使用的大型框架,可以用作货币化方法。在同一个解决方案中,我拥有使用该确切框架的Xamarin.Android应用。我之所以必须这样做,是因为该框架是与Android应用程序一起开发的,并且每次都不执行NuGet参考管理或重新编译.dll。
此大型项目中还有另一个解决方案,该解决方案仅引用Xamarin.Android应用程序项目。但是不同之处在于,这个Android项目使用的是完全相同的.cs文件,而所有文件实际上都具有较大解决方案中.csproj文件的副本。
它们之间的区别是:一个使用直接引用解决方案中的项目,而其他引用.dll文件则由较大的解决方案生成。这是必需的,因为客户端应该有权访问较小的应用程序,但不能访问框架。
我现在知道,具有两个.csproj文件的解决方案在设计上是错误的,因为当我添加或删除任何文件时,必须在两个位置删除它,问题是:在该Android中处理引用的更好方法是什么?项目?
构建系统MSBuild非常灵活,可以让您做很多事情,例如G。从其他文件加载属性。只需打开一个现有的csproj
文件并搜索<Import Project="
。 Import允许您从其他文件中加载所需的任何内容-可能是愚蠢的MSBuild属性,也可以使用<Compile Include="Class1.cs" />
添加文件。而且Visual Studio和MSBuild都在注意这一点。
基于此,您的解决方案可能看起来像这样:
公用文件common.props
:
<PropertyGroup>
<OutputPath>bin\x64\Release\</OutputPath>
</PropertyGroup>
<ItemGroup>
<Reference Include="System.Xml" />
</ItemGroup>
<Compile Include="SharedClass1.cs" />
<Compile Include="SharedClass2.cs" />
在每个使用中的csproj
文件的开头:
<Import Project="common.props" Condition="Exists('common.props')" />
现在您可以将新的共享设置(文件,属性等)添加到common.stuff
,并且所有项目也将自动获得它们。不幸的是,我认为您无法通过本机Visual Studio方式(例如Add→New Item ...)来管理此操作,因此您必须手动执行此操作。但是至少您应该能够在解决方案中添加common.stuff
,这样就不必切换应用程序(例如,切换到Notepad ++)。