Sure there is another way, why not create a script that will generate the condition for you?
if the 50 columns is not in a particular table, just create a tmp table with all the column you need ( select ..... into #tmp from .... )
Then, generate the condition.
declare @schema sysname = 'Purchasing'
declare @table sysname = 'PurchaseOrders'
;with cols as (
select convert(varchar(max), 'ISNULL(' + QUOTENAME(column_name) + ') == TRUE') as col, TABLE_SCHEMA, TABLE_NAME, ordinal_position
from INFORMATION_SCHEMA.COLUMNS
where TABLE_SCHEMA = @schema and TABLE_NAME = @table and ORDINAL_POSITION = 1
union all
select CONVERT (varchar(max) , cl.col + ' || ISNULL(' + QUOTENAME(column_name) + ') == TRUE') as col, c.TABLE_SCHEMA, c.TABLE_NAME, c.ordinal_position
from INFORMATION_SCHEMA.COLUMNS c
inner join cols cl on cl.TABLE_SCHEMA = c.TABLE_SCHEMA and cl.TABLE_NAME = c.TABLE_NAME and c.ORDINAL_POSITION = cl.ORDINAL_POSITION + 1
)
select '= ' + cols.col
from cols
where ORDINAL_POSITION = (select MAX(ordinal_position) from cols)
using the WideWorldImporters databases, this will result with condition, remove what not needed.
= ISNULL([PurchaseOrderID]) == TRUE || ISNULL([SupplierID]) == TRUE || ISNULL([OrderDate]) == TRUE || ISNULL([DeliveryMethodID]) == TRUE || ISNULL([ContactPersonID]) == TRUE || ISNULL([ExpectedDeliveryDate]) == TRUE || ISNULL([SupplierReference]) == TRUE || ISNULL([IsOrderFinalized]) == TRUE || ISNULL([Comments]) == TRUE || ISNULL([InternalComments]) == TRUE || ISNULL([LastEditedBy]) == TRUE || ISNULL([LastEditedWhen]) == TRUE
But beware, no matters which method you choose (mine or generating condition with Excel), testing 50 columns in SSIS might add an enormous overheap, especially if you have a lot of rows.
A better alternative would be to put a flag on each row in the dataset and filter/redirect whether "HasNullValues" is set or not.