类似的问题:
假设我们有一个基本的.NET Standard库,该库引用了从Nuget获得的外部DLL,例如System.Data.SqlClient
。
一个类依赖于外部DLL来起作用:
namespace BasicLibrary
{
public class Class1
{
public void Method()
{
var foo = new System.Data.Sql.SqlNotificationRequest();
}
}
}
我们现在建立针对.NET Standard 2.0的库。
这样做之后,我们创建了一个示例控制台应用程序(.NET Core 3.0),并添加了对我们先前构建的库的引用。
namespace ConsoleApp3
{
class Program
{
static void Main(string[] args)
{
var bar = new BasicLibrary.Class1();
bar.Method();
}
}
}
代码构建良好,但可以预期的是,由于缺少对System.Data.SqlClient
的引用,它崩溃了
System.IO.FileNotFoundException: 'Could not load file or assembly 'System.Data.SqlClient, Version=4.6.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
有没有一种方法可以在构建时检查缺少的程序集?
答案 0 :(得分:-1)
您可以创建将为您完成此任务的目标。如下所示(它会检查NUGET包,在您的情况下,将检查其他路径和库):
<Target Name="EnsureRequiredLibrariesExists" BeforeTargets="PreBuild">
<PropertyGroup>
<!--<ErrorText>YOUR CUSTOM ERROR MESSAGE</ErrorText>-->
<ErrorText>Please include required dlls</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\Microsoft.Net.Compilers.1.1.1\build\Microsoft.Net.Compilers.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Net.Compilers.1.1.1\build\Microsoft.Net.Compilers.props'))" />
</Target>
也是