Я пытаюсь написать задачу MSBuild для построения базы данных с использованием отображений FluentNhibernate.
Код задачи в данный момент выглядит следующим образом ...
public class CreateDatabase : Task
{
[Required]
public string ConfigFile
{ get; set; }
[Required]
public string MappingAssemblyName
{ get; set; }
public override bool Execute()
{
var mappingAssembly = Assembly.Load(MappingAssemblyName);
var config = new Configuration();
config.Configure(ConfigFile);
var fluentConfig = Fluently.Configure(config)
.Mappings(m => m.FluentMappings.AddFromAssembly(mappingAssembly));
var sessionSource = new SessionSource(fluentConfig);
sessionSource.BuildSchema();
return true;
}
}
и использование MSBuild выглядит следующим образом ...
<ItemGroup>
<Content Include="hibernate.cgf.xml" />
</ItemGroup>
<UsingTask AssemblyFile="..\lib\MyUtilities.MSBuild.dll" TaskName="CreateDatabase" />
<Target Name="Build" >
<CreateDatabase ConfigFile="@(Content)" MappingAssemblyName="MyMappingAssemlyName" />
</Target>
Но теперь я застрял
Не удивительно, что Assembly.Load завершается неудачно, поскольку сборка, содержащая мои отображения Fluent ('MyMappingAssemly'), отсутствует.
Если предположить, что отображения Fluent определены в другом проекте моего решения, каков наилучший способ сообщить моей задаче MSBuild о сборке отображения? Я думаю, что могу пойти по неправильному пути, используя свойство MappingAssemblyName.